def test_csv_export(webapp, monkeypatch): """Test CSV export""" monkeypatch.setattr('dnstwister.tools.resolve', lambda domain: ('999.999.999.999', False)) domain = Domain('a.com') hexdomain = domain.to_hex() response = webapp.get('/search/{}/csv'.format(hexdomain)) assert response.headers[ 'Content-Disposition'] == 'attachment; filename=dnstwister_report_a.com.csv' assert '\n'.join(sorted( response.text.strip().split('\n'))) == textwrap.dedent(""" Domain,Type,Tweak,IP,Error a.com,Addition,aa.com,999.999.999.999,False a.com,Addition,ab.com,999.999.999.999,False a.com,Addition,ac.com,999.999.999.999,False a.com,Addition,ad.com,999.999.999.999,False a.com,Addition,ae.com,999.999.999.999,False a.com,Addition,af.com,999.999.999.999,False a.com,Addition,ag.com,999.999.999.999,False a.com,Addition,ah.com,999.999.999.999,False a.com,Addition,ai.com,999.999.999.999,False a.com,Addition,aj.com,999.999.999.999,False a.com,Addition,ak.com,999.999.999.999,False a.com,Addition,al.com,999.999.999.999,False a.com,Addition,am.com,999.999.999.999,False a.com,Addition,an.com,999.999.999.999,False a.com,Addition,ao.com,999.999.999.999,False a.com,Addition,ap.com,999.999.999.999,False a.com,Addition,aq.com,999.999.999.999,False a.com,Addition,ar.com,999.999.999.999,False a.com,Addition,as.com,999.999.999.999,False a.com,Addition,at.com,999.999.999.999,False a.com,Addition,au.com,999.999.999.999,False a.com,Addition,av.com,999.999.999.999,False a.com,Addition,aw.com,999.999.999.999,False a.com,Addition,ax.com,999.999.999.999,False a.com,Addition,ay.com,999.999.999.999,False a.com,Addition,az.com,999.999.999.999,False a.com,Bitsquatting,c.com,999.999.999.999,False a.com,Bitsquatting,e.com,999.999.999.999,False a.com,Bitsquatting,i.com,999.999.999.999,False a.com,Bitsquatting,q.com,999.999.999.999,False a.com,Original*,a.com,999.999.999.999,False a.com,Replacement,1.com,999.999.999.999,False a.com,Replacement,2.com,999.999.999.999,False a.com,Replacement,s.com,999.999.999.999,False a.com,Replacement,w.com,999.999.999.999,False a.com,Replacement,y.com,999.999.999.999,False a.com,Replacement,z.com,999.999.999.999,False a.com,Various,acom.com,999.999.999.999,False a.com,Various,wwa.com,999.999.999.999,False a.com,Various,www-a.com,999.999.999.999,False a.com,Various,wwwa.com,999.999.999.999,False a.com,Vowel swap,o.com,999.999.999.999,False a.com,Vowel swap,u.com,999.999.999.999,False """).strip()
def test_links_on_report(webapp): """Make sure the export links are working.""" domain = Domain('a.com') hexdomain = domain.to_hex() page_html = webapp.get('/search/{}'.format(hexdomain)).text assert '/search/{}/csv'.format(hexdomain) in page_html assert '/search/{}/json'.format(hexdomain) in page_html
def test_unicode_basics(webapp): """Test that Unicode domains work on all endpoints.""" unicode_domain = Domain('xn--sterreich-z7a.icom.museum') endpoints = ('fuzz', 'ip', 'parked', 'safebrowsing', 'whois') for endpoint in endpoints: webapp.get('/api/{}/{}'.format( endpoint, unicode_domain.to_hex(), )) webapp.get('/api/to_hex/{}'.format(unicode_domain.to_ascii()))
def test_json_export(webapp, monkeypatch): """Test JSON export""" monkeypatch.setattr('dnstwister.tools.dnstwist.DomainFuzzer', patches.SimpleFuzzer) monkeypatch.setattr('dnstwister.tools.resolve', lambda domain: ('999.999.999.999', False)) domain = Domain('a.com') path = domain.to_hex() response = webapp.get('/search/{}/json'.format(path)) assert response.headers[ 'Content-Disposition'] == 'attachment; filename=dnstwister_report_a.com.json' assert response.json == { u'a.com': { u'fuzzy_domains': [{ u'domain-name': u'a.com', u'fuzzer': u'Original*', u'hex': u'612e636f6d', u'resolution': { u'error': False, u'ip': u'999.999.999.999' } }, { u'domain-name': u'a.co', u'fuzzer': u'Pretend', u'hex': u'612e636f', u'resolution': { u'error': False, u'ip': u'999.999.999.999' } }] } }