Skip to content
This repository was archived by the owner on Jun 12, 2021. It is now read-only.

Commit 12b9568

Browse files
committed
improved tests.
Fixed wrong reference.
1 parent 232e2db commit 12b9568

File tree

3 files changed

+66
-47
lines changed

3 files changed

+66
-47
lines changed

src/oidcservice/service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ def gather_verify_arguments(self):
393393
'verify': True}
394394

395395
if self.service_name == "provider_info":
396-
if self.service_context.config["issuer"].startswith("http://"):
396+
if self.service_context.issuer.startswith("http://"):
397397
kwargs["allow_http"] = True
398398

399399
return kwargs

tests/test_08_webfinger.py

Lines changed: 61 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import json
2+
from urllib.parse import parse_qs
3+
from urllib.parse import unquote_plus
4+
from urllib.parse import urlsplit
25

36
import pytest
47
from oidcmsg.exception import MissingRequiredAttribute
@@ -35,12 +38,16 @@ def test_query():
3538
'https%3A%2F%2Fjoe%40example.com%3A8080'),
3639
'acct:joe@example.com': ('example.com', rel,
3740
'acct%3Ajoe%40example.com')
38-
}
41+
}
3942

4043
wf = WebFinger(None, None)
4144
for key, args in example_oidc.items():
4245
_q = wf.query(key)
43-
assert _q == pattern.format(*args)
46+
p = urlsplit(_q)
47+
assert p.netloc == args[0]
48+
qs = parse_qs(p.query)
49+
assert qs['resource'][0] == unquote_plus(args[2])
50+
assert qs['rel'][0] == unquote_plus(args[1])
4451

4552

4653
def test_query_2():
@@ -76,7 +83,7 @@ def test_query_2():
7683
"nov@example.com#fragment": (
7784
"nov@example.com", rel,
7885
"https%3A%2F%2Fnov%40example.com"),
79-
"nov@example.com:8080/path?query#fragment":(
86+
"nov@example.com:8080/path?query#fragment": (
8087
"nov@example.com:8080", rel,
8188
"https%3A%2F%2Fnov%40example.com%3A8080%2Fpath%3Fquery"),
8289
"acct:nov@example.com:8080": (
@@ -87,15 +94,15 @@ def test_query_2():
8794
"example.com", rel,
8895
"acct%3Anov%40example.com%2Fpath"
8996
),
90-
"acct:nov@example.com?query":(
97+
"acct:nov@example.com?query": (
9198
"example.com", rel,
9299
"acct%3Anov%40example.com%3Fquery"
93100
),
94101
"acct:nov@example.com#fragment": (
95102
"example.com", rel,
96103
"acct%3Anov%40example.com"
97104
),
98-
"acct:nov@example.com:8080/path?query#fragment":(
105+
"acct:nov@example.com:8080/path?query#fragment": (
99106
"example.com:8080", rel,
100107
"acct%3Anov%40example.com%3A8080%2Fpath%3Fquery"
101108
)
@@ -104,15 +111,19 @@ def test_query_2():
104111
wf = WebFinger(None, None)
105112
for key, args in example_oidc.items():
106113
_q = wf.query(key)
107-
assert _q == pattern.format(*args)
114+
p = urlsplit(_q)
115+
assert p.netloc == args[0]
116+
qs = parse_qs(p.query)
117+
assert qs['resource'][0] == unquote_plus(args[2])
118+
assert qs['rel'][0] == unquote_plus(args[1])
108119

109120

110121
def test_link1():
111122
link = Link(
112123
rel="http://webfinger.net/rel/avatar",
113124
type="image/jpeg",
114125
href="http://www.example.com/~bob/bob.jpg"
115-
)
126+
)
116127

117128
assert set(link.keys()) == {'rel', 'type', 'href'}
118129
assert link['rel'] == "http://webfinger.net/rel/avatar"
@@ -126,7 +137,7 @@ def test_link2():
126137
titles={
127138
"en-us": "The Magical World of Bob",
128139
"fr": "Le monde magique de Bob"
129-
})
140+
})
130141

131142
assert set(link.keys()) == {'rel', 'type', 'href', 'titles'}
132143
assert link['rel'] == "blog"
@@ -149,20 +160,20 @@ def test_jrd():
149160
subject="acct:bob@example.com",
150161
aliases=[
151162
"http://www.example.com/~bob/"
152-
],
163+
],
153164
properties={
154165
"http://example.com/ns/role/": "employee"
155-
},
166+
},
156167
links=[
157168
Link(
158169
rel="http://webfinger.net/rel/avatar",
159170
type="image/jpeg",
160171
href="http://www.example.com/~bob/bob.jpg"
161-
),
172+
),
162173
Link(
163174
rel="http://webfinger.net/rel/profile-page",
164175
href="http://www.example.com/~bob/"
165-
)])
176+
)])
166177

167178
assert set(jrd.keys()) == {'subject', 'aliases', 'properties', 'links'}
168179

@@ -172,35 +183,35 @@ def test_jrd2():
172183
"subject": "acct:bob@example.com",
173184
"aliases": [
174185
"http://www.example.com/~bob/"
175-
],
186+
],
176187
"properties": {
177188
"http://example.com/ns/role/": "employee"
178-
},
189+
},
179190
"links": [
180191
{
181192
"rel": "http://webfinger.net/rel/avatar",
182193
"type": "image/jpeg",
183194
"href": "http://www.example.com/~bob/bob.jpg"
184-
},
195+
},
185196
{
186197
"rel": "http://webfinger.net/rel/profile-page",
187198
"href": "http://www.example.com/~bob/"
188-
},
199+
},
189200
{
190201
"rel": "blog",
191202
"type": "text/html",
192203
"href": "http://blogs.example.com/bob/",
193204
"titles": {
194205
"en-us": "The Magical World of Bob",
195206
"fr": "Le monde magique de Bob"
196-
}
197-
},
207+
}
208+
},
198209
{
199210
"rel": "vcard",
200211
"href": "https://www.example.com/~bob/bob.vcf"
201-
}
202-
]
203-
}
212+
}
213+
]
214+
}
204215

205216
jrd0 = JRD().from_json(json.dumps(ex0))
206217

@@ -215,18 +226,18 @@ def test_extra_member_response():
215226
"subject": "acct:bob@example.com",
216227
"aliases": [
217228
"http://www.example.com/~bob/"
218-
],
229+
],
219230
"properties": {
220231
"http://example.com/ns/role/": "employee"
221-
},
232+
},
222233
'dummy': 'foo',
223234
"links": [
224235
{
225236
"rel": "http://webfinger.net/rel/avatar",
226237
"type": "image/jpeg",
227238
"href": "http://www.example.com/~bob/bob.jpg"
228-
}]
229-
}
239+
}]
240+
}
230241

231242
_resp = JRD().from_json(json.dumps(ex))
232243
assert _resp['dummy'] == 'foo'
@@ -240,52 +251,56 @@ def test_query_device(self):
240251
wf = WebFinger(SERVICE_CONTEXT, state_db=None)
241252
request_args = {'resource': "p1.example.com"}
242253
_info = wf.get_request_parameters(request_args)
243-
assert _info[
244-
'url'] == 'https://p1.example.com/.well-known/webfinger' \
245-
'?rel=http%3A%2F' \
246-
'%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer' \
247-
'&resource=acct%3Ap1.example.com'
254+
p = urlsplit(_info['url'])
255+
assert p.netloc == request_args["resource"]
256+
qs = parse_qs(p.query)
257+
assert qs['resource'][0] == "acct:p1.example.com"
258+
assert qs['rel'][0] == "http://openid.net/specs/connect/1.0/issuer"
248259

249260
def test_query_rel(self):
250261
wf = WebFinger(SERVICE_CONTEXT, state_db=None)
251262
request_args = {'resource': "acct:bob@example.com"}
252263
_info = wf.get_request_parameters(request_args)
253-
assert _info['url'] == \
254-
"https://example.com/.well-known/webfinger?rel=http%3A%2F%2Fopenid" \
255-
".net%2Fspecs%2Fconnect%2F1.0%2Fissuer&resource=acct%3Abob" \
256-
"%40example.com"
264+
p = urlsplit(_info['url'])
265+
assert p.netloc == "example.com"
266+
qs = parse_qs(p.query)
267+
assert qs['resource'][0] == "acct:bob@example.com"
268+
assert qs['rel'][0] == "http://openid.net/specs/connect/1.0/issuer"
257269

258270
def test_query_acct(self):
259271
wf = WebFinger(SERVICE_CONTEXT, rel=OIC_ISSUER, state_db=None)
260272
request_args = {'resource': "acct:carol@example.com"}
261273
_info = wf.get_request_parameters(request_args=request_args)
262274

263-
assert _info['url'] == \
264-
"https://example.com/.well-known/webfinger?rel=http%3A%2F%2Fopenid" \
265-
".net%2Fspecs%2Fconnect%2F1.0%2Fissuer&resource" \
266-
"=acct%3Acarol%40example.com"
275+
p = urlsplit(_info['url'])
276+
assert p.netloc == "example.com"
277+
qs = parse_qs(p.query)
278+
assert qs['resource'][0] == "acct:carol@example.com"
279+
assert qs['rel'][0] == "http://openid.net/specs/connect/1.0/issuer"
267280

268281
def test_query_acct_resource_kwargs(self):
269282
wf = WebFinger(SERVICE_CONTEXT, rel=OIC_ISSUER, state_db=None)
270283
request_args = {}
271284
_info = wf.get_request_parameters(request_args=request_args,
272285
resource="acct:carol@example.com")
273286

274-
assert _info['url'] == \
275-
"https://example.com/.well-known/webfinger?rel=http%3A%2F%2Fopenid" \
276-
".net%2Fspecs%2Fconnect%2F1.0%2Fissuer&resource" \
277-
"=acct%3Acarol%40example.com"
287+
p = urlsplit(_info['url'])
288+
assert p.netloc == "example.com"
289+
qs = parse_qs(p.query)
290+
assert qs['resource'][0] == "acct:carol@example.com"
291+
assert qs['rel'][0] == "http://openid.net/specs/connect/1.0/issuer"
278292

279293
def test_query_acct_resource_config(self):
280294
wf = WebFinger(SERVICE_CONTEXT, rel=OIC_ISSUER, state_db=None)
281295
wf.service_context.config['resource'] = "acct:carol@example.com"
282296
request_args = {}
283297
_info = wf.get_request_parameters(request_args=request_args)
284298

285-
assert _info['url'] == \
286-
"https://example.com/.well-known/webfinger?rel=http%3A%2F%2Fopenid" \
287-
".net%2Fspecs%2Fconnect%2F1.0%2Fissuer&resource" \
288-
"=acct%3Acarol%40example.com"
299+
p = urlsplit(_info['url'])
300+
assert p.netloc == "example.com"
301+
qs = parse_qs(p.query)
302+
assert qs['resource'][0] == "acct:carol@example.com"
303+
assert qs['rel'][0] == "http://openid.net/specs/connect/1.0/issuer"
289304

290305
def test_query_acct_no_resource(self):
291306
wf = WebFinger(SERVICE_CONTEXT, rel=OIC_ISSUER, state_db=None)

tests/test_09_client_auth.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,10 @@ def test_construct(self, services):
262262
_service = services['accesstoken']
263263
kb_rsa = KeyBundle(source='file://{}'.format(
264264
os.path.join(BASE_PATH, "data/keys/rsa.key")), fileformat='der')
265+
266+
for key in kb_rsa:
267+
key.add_kid()
268+
265269
_service.service_context.keyjar.add_kb('', kb_rsa)
266270
_service.service_context.provider_info = {
267271
'issuer': 'https://example.com/',

0 commit comments

Comments
 (0)