<s> from tests import BaseTest <EOL> from mock import patch <EOL> import dns <EOL> from resolverapi . util . dns_query import parse_query <EOL> TEST_DOMAIN = '<STR_LIT>' <EOL> def make_answer ( rdtype , answers = None , additionals = None , authorities = None ) : <EOL> """<STR_LIT>""" <EOL> answer = dns . resolver . Answer ( <EOL> dns . name . from_text ( TEST_DOMAIN ) , <EOL> getattr ( dns . rdatatype , rdtype . upper ( ) ) , <EOL> dns . rdataclass . IN , <EOL> dns . message . from_text ( '<STR_LIT>' ) , <EOL> raise_on_no_answer = False <EOL> ) <EOL> if answers : <EOL> rrset = dns . rrset . from_text ( TEST_DOMAIN , <NUM_LIT> , '<STR_LIT>' , rdtype , * answers ) <EOL> answer . response . answer = [ rrset ] <EOL> if additionals : <EOL> rrset = dns . rrset . from_text ( TEST_DOMAIN , <NUM_LIT> , '<STR_LIT>' , rdtype , * additionals ) <EOL> answer . response . answer = [ rrset ] <EOL> if authorities : <EOL> rrset = dns . rrset . from_text ( TEST_DOMAIN , <NUM_LIT> , '<STR_LIT>' , rdtype , * authorities ) <EOL> answer . response . authority = [ rrset ] <EOL> return answer <EOL> @ patch ( '<STR_LIT>' ) <EOL> class ParseQueryTests ( BaseTest ) : <EOL> def setUp ( self ) : <EOL> super ( ParseQueryTests , self ) . setUp ( ) <EOL> def lookup ( self , rdtype ) : <EOL> return super ( ParseQueryTests , self ) . get ( <EOL> '<STR_LIT>' % ( rdtype , TEST_DOMAIN ) ) <EOL> def test_a_lookup ( self , query , rdtype = '<STR_LIT:A>' ) : <EOL> rrs = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : TEST_DOMAIN <EOL> } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT:Name>' : TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT>' : rdtype , <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } , <EOL> { '<STR_LIT:Name>' : TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT>' : rdtype , <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } <EOL> ] <EOL> } , resp ) <EOL> def test_aaaa_lookup ( self , query , rdtype = '<STR_LIT>' ) : <EOL> rrs = [ '<STR_LIT>' ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : TEST_DOMAIN <EOL> } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT:Name>' : TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT>' : rdtype , <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' } <EOL> ] <EOL> } , resp ) <EOL> def test_mx_lookup ( self , query , rdtype = '<STR_LIT>' ) : <EOL> rrs = [ '<STR_LIT>' % TEST_DOMAIN , '<STR_LIT>' % TEST_DOMAIN ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : TEST_DOMAIN <EOL> } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT:Name>' : TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT:10> , <EOL> '<STR_LIT>' : '<STR_LIT>' % TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> { '<STR_LIT:Name>' : TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT:20> , <EOL> '<STR_LIT>' : '<STR_LIT>' % TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> ] <EOL> } , resp ) <EOL> def test_ns_lookup ( self , query , rdtype = '<STR_LIT>' ) : <EOL> rrs = [ '<STR_LIT>' % TEST_DOMAIN , '<STR_LIT>' % TEST_DOMAIN ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:Name>' : TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT>' : rdtype } , <EOL> { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:Name>' : TEST_DOMAIN , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT>' : rdtype } <EOL> ] <EOL> } , resp ) <EOL> def test_cname_lookup ( self , query , rdtype = '<STR_LIT>' ) : <EOL> """<STR_LIT>""" <EOL> rrs = [ '<STR_LIT>' <EOL> '<STR_LIT>' . format ( TEST_DOMAIN ) ] <EOL> query . return_value = make_answer ( rdtype , authorities = rrs ) <EOL> resp , code = self . lookup ( '<STR_LIT>' ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : [ ] , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : '<STR_LIT>' % TEST_DOMAIN , <EOL> '<STR_LIT>' : '<STR_LIT>' % TEST_DOMAIN , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT:Name>' : TEST_DOMAIN } <EOL> ] <EOL> } , resp ) <EOL> def test_txt_lookup ( self , query , rdtype = '<STR_LIT>' ) : <EOL> rrs = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:Name>' : '<STR_LIT>' } , <EOL> { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:Name>' : '<STR_LIT>' } <EOL> ] , <EOL> } , resp ) <EOL> def test_ptr_lookup ( self , query , rdtype = "<STR_LIT>" ) : <EOL> rrs = [ '<STR_LIT>' ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT>' : rdtype , <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT:Name>' : TEST_DOMAIN } <EOL> ] , <EOL> } , resp ) <EOL> def test_naptr_lookup ( self , query , rdtype = "<STR_LIT>" ) : <EOL> rrs = [ '<STR_LIT>' ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : '<STR_LIT:u>' , <EOL> '<STR_LIT>' : <NUM_LIT:100> , <EOL> '<STR_LIT>' : <NUM_LIT:20> , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:.>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : <NUM_LIT> , '<STR_LIT:Name>' : TEST_DOMAIN } <EOL> ] , <EOL> } , resp ) <EOL> def test_loc_lookup ( self , query , rdtype = "<STR_LIT>" ) : <EOL> rrs = [ '<STR_LIT>' ] <EOL> query . return_value = make_answer ( rdtype , answers = rrs ) <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : '<STR_LIT>' } , <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT>' : [ <NUM_LIT:4> , <NUM_LIT> , <NUM_LIT:32> , <NUM_LIT:0> ] , '<STR_LIT>' : [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:0> ] , <EOL> '<STR_LIT>' : - <NUM_LIT> , '<STR_LIT>' : '<STR_LIT>' , '<STR_LIT>' : rdtype , '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT:Name>' : TEST_DOMAIN } <EOL> ] , <EOL> } , resp ) <EOL> @ patch ( '<STR_LIT>' ) <EOL> def test_query_section ( self , parse_query_mock , query , rdtype = '<STR_LIT:A>' ) : <EOL> query . return_value = make_answer ( rdtype ) <EOL> def mod_parse_query ( answer , * args , ** kwargs ) : <EOL> return parse_query ( answer , '<STR_LIT>' , <NUM_LIT:1> ) <EOL> parse_query_mock . side_effect = mod_parse_query <EOL> resp , code = self . lookup ( rdtype ) <EOL> self . assert200 ( code ) <EOL> self . assertDictContainsSubset ( { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : <NUM_LIT:1> <EOL> } <EOL> } , resp ) </s>
