Skip to content

Commit a9f760e

Browse files
committed
Added source tests
1 parent c837615 commit a9f760e

File tree

3 files changed

+95
-21
lines changed

3 files changed

+95
-21
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#
2+
# Copyright (c) 2021 Airbyte, Inc., all rights reserved.
3+
#
4+
5+
import pytest
6+
from requests.auth import HTTPBasicAuth
7+
8+
9+
@pytest.fixture(name="config")
10+
def config_fixture():
11+
return {"domain": "test.freshdesk.com", "api_key": "secret_api_key", "requests_per_minute": 50, "start_date": "2002-02-10T22:21:44Z"}
12+
13+
14+
@pytest.fixture(name="authenticator")
15+
def authenticator_fixture(config):
16+
return HTTPBasicAuth(username=config["api_key"], password="unused_with_api_key")

airbyte-integrations/connectors/source-freshdesk/unit_tests/test_300_page.py

+10-21
Original file line numberDiff line numberDiff line change
@@ -3,72 +3,61 @@
33
#
44

55
import pytest
6-
from requests.auth import HTTPBasicAuth
76

87
from airbyte_cdk.models import SyncMode
98
from source_freshdesk.streams import Tickets
109

1110

12-
@pytest.fixture(name="config")
13-
def config_fixture():
14-
return {"domain": "test.freshdesk.com", "api_key": "secret_api_key", "requests_per_minute": 50, "start_date": "2002-02-10T22:21:44Z"}
15-
16-
17-
@pytest.fixture(name="authenticator")
18-
def authenticator_fixture(config):
19-
return HTTPBasicAuth(username=config["api_key"], password="unused_with_api_key")
20-
21-
2211
@pytest.fixture(name="responses")
2312
def responses_fixtures():
2413
return [
2514
{
26-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&updated_since=2002-02-10T22%3A21%3A44%2B00%3A00",
15+
"url": "/api/tickets?per_page=1&updated_since=2002-02-10T22%3A21%3A44%2B00%3A00",
2716
"json": [{"id": 1, "updated_at": "2018-01-02T00:00:00Z"}],
2817
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2002-02-10T22%3A21%3A44%2B00%3A00>; rel="next"'}
2918
},
3019
{
31-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2002-02-10T22%3A21%3A44%2B00%3A00",
20+
"url": "/api/tickets?per_page=1&page=2&updated_since=2002-02-10T22%3A21%3A44%2B00%3A00",
3221
"json": [{"id": 2, "updated_at": "2018-02-02T00:00:00Z"}],
3322
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=3&updated_since=2002-02-10T22%3A21%3A44%2B00%3A00>; rel="next"'}
3423
},
3524
{
36-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&updated_since=2018-02-02T00%3A00%3A00%2B00%3A00",
25+
"url": "/api/tickets?per_page=1&updated_since=2018-02-02T00%3A00%3A00%2B00%3A00",
3726
"json": [{"id": 2, "updated_at": "2018-02-02T00:00:00Z"}],
3827
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2018-02-02T00%3A00%3A00%2B00%3A00>; rel="next"'},
3928
},
4029
{
41-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2018-02-02T00%3A00%3A00%2B00%3A00",
30+
"url": "/api/tickets?per_page=1&page=2&updated_since=2018-02-02T00%3A00%3A00%2B00%3A00",
4231
"json": [{"id": 3, "updated_at": "2018-03-02T00:00:00Z"}],
4332
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=3&updated_since=2018-02-02T00%3A00%3A00%2B00%3A00>; rel="next"'},
4433
},
4534
{
46-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&updated_since=2018-03-02T00%3A00%3A00%2B00%3A00",
35+
"url": "/api/tickets?per_page=1&updated_since=2018-03-02T00%3A00%3A00%2B00%3A00",
4736
"json": [{"id": 3, "updated_at": "2018-03-02T00:00:00Z"}],
4837
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2018-03-02T00%3A00%3A00%2B00%3A00>; rel="next"'},
4938
},
5039
{
51-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2018-03-02T00%3A00%3A00%2B00%3A00",
40+
"url": "/api/tickets?per_page=1&page=2&updated_since=2018-03-02T00%3A00%3A00%2B00%3A00",
5241
"json": [{"id": 4, "updated_at": "2019-01-03T00:00:00Z"}],
5342
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=3&updated_since=2018-03-02T00%3A00%3A00%2B00%3A00>; rel="next"'},
5443
},
5544
{
56-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&updated_since=2019-01-03T00%3A00%3A00%2B00%3A00",
45+
"url": "/api/tickets?per_page=1&updated_since=2019-01-03T00%3A00%3A00%2B00%3A00",
5746
"json": [{"id": 4, "updated_at": "2019-01-03T00:00:00Z"}],
5847
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2019-01-03T00%3A00%3A00%2B00%3A00>; rel="next"'},
5948
},
6049
{
61-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2019-01-03T00%3A00%3A00%2B00%3A00",
50+
"url": "/api/tickets?per_page=1&page=2&updated_since=2019-01-03T00%3A00%3A00%2B00%3A00",
6251
"json": [{"id": 5, "updated_at": "2019-02-03T00:00:00Z"}],
6352
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=3&updated_since=2019-01-03T00%3A00%3A00%2B00%3A00>; rel="next"'},
6453
},
6554
{
66-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&updated_since=2019-02-03T00%3A00%3A00%2B00%3A00",
55+
"url": "/api/tickets?per_page=1&updated_since=2019-02-03T00%3A00%3A00%2B00%3A00",
6756
"json": [{"id": 5, "updated_at": "2019-02-03T00:00:00Z"}],
6857
"headers": {"Link": '<https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2019-02-03T00%3A00%3A00%2B00%3A00>; rel="next"'},
6958
},
7059
{
71-
"url": "https://test.freshdesk.com/api/tickets?per_page=1&page=2&updated_since=2019-02-03T00%3A00%3A00%2B00%3A00",
60+
"url": "/api/tickets?per_page=1&page=2&updated_since=2019-02-03T00%3A00%3A00%2B00%3A00",
7261
"json": [{"id": 6, "updated_at": "2019-03-03T00:00:00Z"}]
7362
}
7463
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#
2+
# Copyright (c) 2021 Airbyte, Inc., all rights reserved.
3+
#
4+
5+
import logging
6+
from source_freshdesk import SourceFreshdesk
7+
8+
logger = logging.getLogger("test_source")
9+
10+
11+
def test_check_connection_ok(requests_mock, config):
12+
json_resp = {
13+
"primary_language": "en",
14+
"supported_languages": [],
15+
"portal_languages": []
16+
}
17+
18+
requests_mock.register_uri("GET", "/api/v2/settings/helpdesk", json=json_resp)
19+
ok, error_msg = SourceFreshdesk().check_connection(logger, config=config)
20+
21+
assert ok
22+
assert not error_msg
23+
24+
25+
def test_check_connection_invalid_api_key(requests_mock, config):
26+
responses = [{
27+
"json": {
28+
"code": "invalid_credentials",
29+
"message": "You have to be logged in to perform this action."
30+
},
31+
"status_code": 401
32+
}]
33+
34+
requests_mock.register_uri("GET", "/api/v2/settings/helpdesk", responses)
35+
ok, error_msg = SourceFreshdesk().check_connection(logger, config=config)
36+
37+
assert not ok
38+
assert error_msg == "invalid_credentials: You have to be logged in to perform this action."
39+
40+
41+
def test_check_connection_empty_config(config):
42+
config = {}
43+
44+
ok, error_msg = SourceFreshdesk().check_connection(logger, config=config)
45+
46+
assert not ok
47+
assert error_msg
48+
49+
50+
def test_check_connection_invalid_config(config):
51+
config.pop("api_key")
52+
53+
ok, error_msg = SourceFreshdesk().check_connection(logger, config=config)
54+
55+
assert not ok
56+
assert error_msg
57+
58+
59+
def test_check_connection_exception(config):
60+
ok, error_msg = SourceFreshdesk().check_connection(logger, config=config)
61+
62+
assert not ok
63+
assert error_msg
64+
65+
66+
def test_streams(config):
67+
streams = SourceFreshdesk().streams(config)
68+
69+
assert len(streams) == 10

0 commit comments

Comments
 (0)