Skip to content

Commit 902a5d8

Browse files
committed
IDEV-2478: Add tests
1 parent 1832eaa commit 902a5d8

3 files changed

Lines changed: 169 additions & 0 deletions

File tree

test.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import os
2+
3+
from domaintools import API
4+
5+
user = os.getenv("MY_API_USER", "jbabac")
6+
key = os.getenv("MY_API_KEY")
7+
8+
dt_api = API(
9+
username=user,
10+
key=key,
11+
app_name="jd-test-python-wrapper",
12+
)
13+
14+
result = dt_api.iris_investigate("espn.com").data()
15+
print(result)
16+
17+
# help(dt_api.iris_investigate)
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
interactions:
2+
- request:
3+
body: ''
4+
headers:
5+
accept:
6+
- '*/*'
7+
accept-encoding:
8+
- gzip, deflate
9+
connection:
10+
- keep-alive
11+
host:
12+
- api.domaintools.com
13+
user-agent:
14+
- python-httpx/0.22.0
15+
method: GET
16+
uri: https://api.domaintools.com/v1/domain-history?app_name=python_wrapper&app_version=2.1.0&domain=chat.com&include_fields=registrar
17+
response:
18+
content: '{"response":{"domain":"chat.com","count":3,"registration_source":"parsed_whois","changes":[{"timestamp":"2024-03-15T12:00:00Z","field":"registrar","active":true,"before":{"domain":"chat.com","registrar":"Old
19+
Registrar Inc","active":true},"after":{"domain":"chat.com","registrar":"New
20+
Registrar LLC","active":true}},{"timestamp":"2023-06-20T08:30:00Z","field":"registrar","active":true,"before":{"domain":"chat.com","registrar":"Original
21+
Registrar Co","active":true},"after":{"domain":"chat.com","registrar":"Old Registrar
22+
Inc","active":true}},{"timestamp":"2022-01-10T00:00:00Z","field":"registrar","active":true,"before":null,"after":{"domain":"chat.com","registrar":"Original
23+
Registrar Co","active":true}}]}}'
24+
headers:
25+
Content-Type:
26+
- application/json;charset=utf-8
27+
Date:
28+
- Thu, 05 Jun 2025 12:00:00 GMT
29+
http_version: HTTP/1.1
30+
status_code: 200
31+
- request:
32+
body: ''
33+
headers:
34+
accept:
35+
- '*/*'
36+
accept-encoding:
37+
- gzip, deflate
38+
connection:
39+
- keep-alive
40+
host:
41+
- api.domaintools.com
42+
user-agent:
43+
- python-httpx/0.28.1
44+
method: GET
45+
uri: https://api.domaintools.com/v1/account?app_name=python_wrapper&app_version=2.7.4
46+
response:
47+
content: '{"response":{"account":{"api_username":"integrations_testing","active":true},"products":[{"id":"account-information","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"5","absolute_limit":null,"usage":{"today":"43","month":"236"},"expiration_date":null},{"id":"iris-investigate","per_month_limit":"10000","per_hour_limit":null,"per_minute_limit":"20","absolute_limit":null,"usage":{"today":"7","month":"11"},"expiration_date":null},{"id":"iris-enrich","per_month_limit":"20000","per_hour_limit":null,"per_minute_limit":"60","absolute_limit":null,"usage":{"today":"9","month":"79"},"expiration_date":null},{"id":"iris-detect-escalate-domains","per_month_limit":"1500","per_hour_limit":null,"per_minute_limit":"30","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-ignored-domains","per_month_limit":"1500","per_hour_limit":"10","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"11","month":"83"},"expiration_date":null},{"id":"iris-detect-manage-watchlist-domains","per_month_limit":"1500","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris-detect-monitors","per_month_limit":"1500","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"2","month":"5"},"expiration_date":null},{"id":"iris-detect-new-domains","per_month_limit":"1500","per_hour_limit":"10","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"11","month":"83"},"expiration_date":null},{"id":"iris-detect-watched-domains","per_month_limit":"1500","per_hour_limit":"10","per_minute_limit":"30","absolute_limit":null,"usage":{"today":"11","month":"83"},"expiration_date":null},{"id":"domain-profile","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"domain-search","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"500","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"hosting-history","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"ip-monitor","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"ip-registrant-monitor","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"iris","per_month_limit":"10000","per_hour_limit":null,"per_minute_limit":"10","absolute_limit":null,"usage":{"today":"7","month":"11"},"expiration_date":null},{"id":"reputation","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-ip","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-ip-whois","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"risk","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"risk-evidence","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-name-server","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"reverse-whois","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"mark-alert","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"parsed-whois","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"name-server-monitor","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"whois","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"whois-history","per_month_limit":"5000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"parsed-whois-live","per_month_limit":"120","per_hour_limit":null,"per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"registrant-alert","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"5","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"newly-active-domains-feed-(api)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"20","absolute_limit":null,"usage":{"today":"19","month":"163"},"expiration_date":null},{"id":"newly-observed-domains-feed-(api)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"20","absolute_limit":null,"usage":{"today":"234","month":"2040"},"expiration_date":null},{"id":"parsed-domain-rdap","per_month_limit":"50000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"1","month":"16"},"expiration_date":null},{"id":"domain-registration-data-access-protocol-feed-(api)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"real-time-domain-discovery-feed-(api)","per_month_limit":"100000","per_hour_limit":"120","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"real-time-domain-discovery-feed-(s3)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"domain-registration-data-access-protocol-feed-(s3)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"newly-active-domains-feed-(s3)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"newly-observed-domains-feed-(s3)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"newly-observed-hosts-feed-(api)","per_month_limit":"100000","per_hour_limit":"120","per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"newly-observed-hosts-feed-(s3)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"20","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"real-time-domain-hotlist-(api)","per_month_limit":"100000","per_hour_limit":"120","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"19","month":"163"},"expiration_date":null},{"id":"real-time-domain-hotlist-(s3)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"real-time-domain-risk-(api)","per_month_limit":"100000","per_hour_limit":"120","per_minute_limit":"120","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"real-time-domain-risk-(s3)","per_month_limit":"100000","per_hour_limit":null,"per_minute_limit":"10","absolute_limit":null,"usage":{"today":"0","month":"0"},"expiration_date":null},{"id":"domain-history","per_month_limit":"1000","per_hour_limit":null,"per_minute_limit":"120","absolute_limit":null,"usage":{"today":"1","month":"1"},"expiration_date":null}]}}'
48+
headers:
49+
access-control-allow-origin:
50+
- '*'
51+
cache-control:
52+
- no-store, no-cache, must-revalidate
53+
content-encoding:
54+
- gzip
55+
content-security-policy:
56+
- 'default-src * data: blob: ''unsafe-eval'' ''unsafe-inline'''
57+
content-type:
58+
- application/json;charset=utf-8
59+
date:
60+
- Thu, 04 Jun 2026 16:33:19 GMT
61+
expires:
62+
- Thu, 19 Nov 1981 08:52:00 GMT
63+
pragma:
64+
- no-cache
65+
set-cookie:
66+
- dtsession=u7uu2bjnp2e17nu0j1vfsktlc6qvlad61v16eodsukkkfgfk28m6r5dfda0eiqolvgfufbb5trv8qlsu5nkmm2tjd95ovg2k6htvv0c;
67+
expires=Sat, 04-Jul-2026 16:33:19 GMT; Max-Age=2592000; path=/; domain=.domaintools.com;
68+
secure; HttpOnly
69+
strict-transport-security:
70+
- max-age=31536000; includeSubDomains
71+
transfer-encoding:
72+
- chunked
73+
vary:
74+
- Accept-Encoding
75+
x-time:
76+
- '195782'
77+
http_version: HTTP/1.1
78+
status_code: 200
79+
- request:
80+
body: ''
81+
headers:
82+
accept:
83+
- '*/*'
84+
accept-encoding:
85+
- gzip, deflate
86+
connection:
87+
- keep-alive
88+
host:
89+
- api.domaintools.com
90+
user-agent:
91+
- python-httpx/0.28.1
92+
method: GET
93+
uri: https://api.domaintools.com/v1/domain-history?app_name=python_wrapper&app_version=2.7.4&domain=chat.com&include_fields=registrar
94+
response:
95+
content: '{"response":{"domain":"chat.com","count":8,"registration_source":"parsed_whois","changes":[{"timestamp":"2025-04-02T18:35:11Z","field":"registrar","before":{"registrar":{"value":"MarkMonitor
96+
Inc."}},"after":{"registrar":{"value":"MarkMonitor, Inc."}}},{"timestamp":"2025-04-02T06:22:55Z","field":"registrar","before":{"registrar":{"value":"MarkMonitor,
97+
Inc."}},"after":{"registrar":{"value":"MarkMonitor Inc."}}},{"timestamp":"2025-03-10T03:00:52Z","field":"registrar","before":{"registrar":{"value":"MarkMonitor
98+
Inc."}},"after":{"registrar":{"value":"MarkMonitor, Inc."}}},{"timestamp":"2025-03-08T02:03:00Z","field":"registrar","before":{"registrar":{"value":"MarkMonitor,
99+
Inc."}},"after":{"registrar":{"value":"MarkMonitor Inc."}}},{"timestamp":"2025-02-25T23:09:51Z","field":"registrar","before":{"registrar":{"value":"MarkMonitor
100+
Inc."}},"after":{"registrar":{"value":"MarkMonitor, Inc."}}},{"timestamp":"2025-02-24T21:26:45Z","field":"registrar","before":{"registrar":{"value":"MarkMonitor,
101+
Inc."}},"after":{"registrar":{"value":"MarkMonitor Inc."}}},{"timestamp":"2024-11-14T07:03:50Z","field":"registrar","before":{"registrar":{"value":"GoDaddy.com,
102+
LLC"}},"after":{"registrar":{"value":"MarkMonitor, Inc."}}},{"timestamp":"2023-03-27T02:47:30Z","field":"registrar","before":{"registrar":{"value":"NET
103+
TUNER CORP. DBA WEBMASTERS.COM"}},"after":{"registrar":{"value":"GoDaddy.com,
104+
LLC"}}}]}}'
105+
headers:
106+
access-control-allow-origin:
107+
- '*'
108+
cache-control:
109+
- no-store, no-cache, must-revalidate
110+
content-encoding:
111+
- gzip
112+
content-security-policy:
113+
- 'default-src * data: blob: ''unsafe-eval'' ''unsafe-inline'''
114+
content-type:
115+
- application/json;charset=utf-8
116+
date:
117+
- Thu, 04 Jun 2026 16:33:20 GMT
118+
expires:
119+
- Thu, 19 Nov 1981 08:52:00 GMT
120+
pragma:
121+
- no-cache
122+
set-cookie:
123+
- dtsession=oheuhpln3atkp1d8fcpsc7dtjf47ous1cv908vf6ta7jeuvbdr6dmvk2jj8rlb6kfpc2khifdve0l2o9fuefg0m2rgf0kic4nc73hoi;
124+
expires=Sat, 04-Jul-2026 16:33:20 GMT; Max-Age=2592000; path=/; domain=.domaintools.com;
125+
secure; HttpOnly
126+
strict-transport-security:
127+
- max-age=31536000; includeSubDomains
128+
transfer-encoding:
129+
- chunked
130+
vary:
131+
- Accept-Encoding
132+
x-time:
133+
- '372678'
134+
http_version: HTTP/1.1
135+
status_code: 200
136+
version: 1

tests/test_api.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,22 @@ def test_domain_profile():
7070
assert "ip_address" in history
7171

7272

73+
@vcr.use_cassette
74+
def test_domain_history():
75+
api_call = api.domain_history("chat.com", include_fields="registrar")
76+
with api_call as result:
77+
assert "domain" in result
78+
assert "count" in result
79+
assert "registration_source" in result
80+
assert "changes" in result
81+
82+
for change in api_call:
83+
assert "timestamp" in change
84+
assert "field" in change
85+
assert "before" in change
86+
assert "after" in change
87+
88+
7389
@vcr.use_cassette
7490
def test_domain_search():
7591
api_call = api.domain_search("google")

0 commit comments

Comments
 (0)