66from urllib .parse import parse_qs
77from urllib .parse import urlparse
88
9-
9+ from oidcrp . util import get_deserialization_method , URL_ENCODED
1010from oidcservice .exception import WrongContentType
1111
1212from oidcrp import util
@@ -101,12 +101,13 @@ def test_match_to():
101101 assert not util .match_to_ (str3 , list_of_str )
102102
103103
104- def test_verify_header ():
105- class FakeResponse ( ):
106- def __init__ ( self , header ):
107- self .headers = { "content-type" : header }
108- self . text = "TEST_RESPONSE"
104+ class FakeResponse ():
105+ def __init__ ( self , header ):
106+ self . headers = { "content-type" : header }
107+ self .text = "TEST_RESPONSE"
108+
109109
110+ def test_verify_header ():
110111 json_header = "application/json"
111112 jwt_header = "application/jwt"
112113 default_header = util .DEFAULT_POST_CONTENT_TYPE
@@ -120,6 +121,15 @@ def __init__(self, header):
120121 "urlencoded" ) == "urlencoded"
121122 assert util .verify_header (FakeResponse (plain_text_header ),
122123 "urlencoded" ) == "urlencoded"
124+ assert util .verify_header (FakeResponse ('text/html' ), 'txt' )
125+ assert util .verify_header (FakeResponse ('text/plain' ), 'txt' )
126+
127+ assert util .verify_header (FakeResponse (json_header ), "" ) == "json"
128+ assert util .verify_header (FakeResponse (jwt_header ), "" ) == "jwt"
129+ assert util .verify_header (FakeResponse (jwt_header ), "" ) == "jwt"
130+ assert util .verify_header (FakeResponse (default_header ), "" ) == "urlencoded"
131+ assert util .verify_header (FakeResponse (plain_text_header ), "" ) == "txt"
132+ assert util .verify_header (FakeResponse ('text/html' ), '' ) == 'txt'
123133
124134 with pytest .raises (WrongContentType ):
125135 util .verify_header (FakeResponse (json_header ), "urlencoded" )
@@ -130,3 +140,38 @@ def __init__(self, header):
130140
131141 with pytest .raises (ValueError ):
132142 util .verify_header (FakeResponse (json_header ), "undefined" )
143+
144+
145+ def test_get_deserialization_method_json ():
146+ resp = FakeResponse ("application/json" )
147+ assert get_deserialization_method (resp ) == 'json'
148+
149+ resp = FakeResponse ("application/json; charset=utf-8" )
150+ assert get_deserialization_method (resp ) == 'json'
151+
152+ resp .headers ["content-type" ] = "application/jrd+json"
153+ assert get_deserialization_method (resp ) == 'json'
154+
155+
156+ def test_get_deserialization_method_jwt ():
157+ resp = FakeResponse ("application/jwt" )
158+ assert get_deserialization_method (resp ) == 'jwt'
159+
160+
161+ def test_get_deserialization_method_urlencoded ():
162+ resp = FakeResponse (URL_ENCODED )
163+ assert get_deserialization_method (resp ) == 'urlencoded'
164+
165+
166+ def test_get_deserialization_method_text ():
167+ resp = FakeResponse ('text/html' )
168+ assert get_deserialization_method (resp ) == ''
169+
170+ resp = FakeResponse ('text/plain' )
171+ assert get_deserialization_method (resp ) == ''
172+
173+
174+ def test_verify_no_content_type ():
175+ resp = FakeResponse ('text/html' )
176+ del resp .headers ['content-type' ]
177+ assert util .verify_header (resp , 'txt' ) == 'txt'
0 commit comments