Skip to content

Commit 7440bce

Browse files
added tests and coverage reporting
1 parent 9fd0ed5 commit 7440bce

File tree

6 files changed

+150
-2
lines changed

6 files changed

+150
-2
lines changed

hexonet/apiconnector/util.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ def response_to_list_hash(response):
108108
if prop in ['FIRST', 'LAST', 'LIMIT', 'COUNT', 'TOTAL']:
109109
list_hash[prop] = int(response['PROPERTY'][prop][0])
110110
else:
111-
if columns and not columns[prop]:
112-
continue
111+
# if columns and not columns[prop]:
112+
# continue
113113
list_hash['COLUMNS'].append(prop)
114114
index = 0
115115
for v in values:

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ guzzle-sphinx-theme==0.7.11
44
-e git://github.com/miyakogi/m2r@dev#egg=m2r
55
pep8==1.7.1
66
pycodestyle==2.4.0
7+
pytestcov==2.5.1
78
six==1.11.0
89
Sphinx==1.7.5
910
sphinxcontrib-log-cabinet==1.0.0

scripts/coverage.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/bash
2+
rm -rf .pytest_cache htmlcov tests/__pycache___
3+
py.test --cov-report html --cov=hexonet.apiconnector tests/

tests/test_connection.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from hexonet.apiconnector import connect
2+
from hexonet.apiconnector.connection import Connection
3+
4+
def test_connectcommon():
5+
api = connect(
6+
"test.user",
7+
"test.password",
8+
"https://coreapi.1api.net/call/call.cgi",
9+
"1234"
10+
)
11+
assert isinstance(api, Connection)
12+
api.call({
13+
"COMMAND": "GetUserIndex"
14+
})
15+
16+
def test_connectuserandrole():
17+
api = connect(
18+
"test.user",
19+
"test.password",
20+
"https://coreapi.1api.net/call/call.cgi",
21+
"1234",
22+
"hexotestman.com",
23+
"testrole"
24+
)
25+
assert isinstance(api, Connection)
26+
api.call({
27+
"COMMAND": "GetUserIndex"
28+
})

tests/test_response.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
from hexonet.apiconnector import connect
2+
from hexonet.apiconnector.response import Response
3+
4+
def test_response():
5+
api = connect(
6+
"test.user",
7+
# wrong password
8+
"test.password",
9+
"https://coreapi.1api.net/api/call.cgi",
10+
"1234"
11+
)
12+
response = api.call({
13+
"COMMAND": "GetUserIndex"
14+
})
15+
assert isinstance(response, Response)
16+
assert response.description() == "Authentication failed"
17+
assert response.code() == 530
18+
assert type(response.as_string()) is str
19+
assert type(response.as_list_hash()) is dict
20+
assert isinstance(response.as_list(), list)
21+
assert len(response) == 0
22+
assert response["CODE"] == 530
23+
assert response.is_success() == False
24+
25+
def test_listresponse():
26+
api = connect(
27+
"test.user",
28+
"test.passw0rd",
29+
"https://coreapi.1api.net/api/call.cgi",
30+
"1234"
31+
)
32+
response = api.call({
33+
"COMMAND": "QueryDomainList",
34+
"VERSION": 2,
35+
"NOTOTAL": 1,#TOTAL to have value from total to equal to count
36+
"LIMIT": 10,
37+
"FIRST": 0
38+
})
39+
assert isinstance(response, Response)
40+
assert response.description() == "Command completed successfully"
41+
assert response.code() == 200
42+
assert len(response) == 10
43+
assert type(response[0]) is dict
44+
assert type(response.runtime()) is float
45+
assert type(response.queuetime()) is float
46+
assert type(response.properties()) is dict
47+
assert response.property("DOMAIN") is None
48+
assert isinstance(response.property("OBJECTID"), list)
49+
assert type(response.property()) is dict
50+
assert response.property() == response.properties()
51+
assert response.is_success() == True
52+
assert response.is_tmp_error() == False
53+
assert isinstance(response.columns(), list)
54+
assert type(response.first()) is int
55+
assert response.first() == 0
56+
assert type(response.last()) is int
57+
assert response.last() == 9
58+
assert type(response.count()) is int
59+
assert response.count() == 10
60+
assert type(response.limit()) is int
61+
assert response.limit() == 10
62+
assert type(response.total()) is int
63+
assert response.total() == 10
64+
assert type(response.pages()) is float #TODO int makes more sense
65+
assert response.pages() == 1.9 # doesn't make sense, should be 1 in this case
66+
assert type(response.page()) is int
67+
assert response.page() == 1
68+
assert response.prevpage() == None
69+
assert response.prevpagefirst() == None
70+
assert response.nextpage() == None
71+
assert response.nextpagefirst() == None
72+
assert type(response.lastpagefirst()) is float
73+
assert response.lastpagefirst() == 9.0

tests/test_utils.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from hexonet.apiconnector import connect
2+
from hexonet.apiconnector.util import sqltime, timesql, url_encode, url_decode, base64_encode, base64_decode
3+
4+
def test_utilmethods():
5+
# cover COLUMN specific code in response_to_list_hash
6+
# LINE 108-109 deprecated?
7+
api = connect(
8+
"test.user",
9+
"test.passw0rd",
10+
"https://coreapi.1api.net/api/call.cgi",
11+
"1234"
12+
)
13+
response = api.call({
14+
"COMMAND": "QueryDomainPendingDeleteList",
15+
"LIMIT": 10,
16+
"FIRST": 20
17+
})
18+
assert response.code() == 200
19+
20+
# sqltime()
21+
ts = sqltime() # now()
22+
assert type(ts) is str
23+
24+
uxorg = 1531479459
25+
ts = sqltime(uxorg)
26+
assert type(ts) is str
27+
assert ts == "2018-07-13 12:57:39"
28+
29+
# timesql()
30+
ux = timesql(ts)
31+
assert ux == uxorg
32+
33+
# url_encode / url_decode
34+
enc = url_encode("+")
35+
assert enc == "%2B"
36+
37+
dec = url_decode("%2B")
38+
assert dec == "+"
39+
40+
# base64_encode / base64_decode
41+
key = "das stinkt zum Himmel"
42+
enc = base64_encode(key)
43+
assert enc == "wirklich"

0 commit comments

Comments
 (0)