|
3 | 3 |
|
4 | 4 | from idpyoidc.server.cookie_handler import CookieHandler |
5 | 5 | from idpyoidc.server.cookie_handler import compute_session_state |
| 6 | +from tests import CRYPT_CONFIG |
6 | 7 |
|
7 | 8 | KEYDEFS = [ |
8 | 9 | {"type": "OCT", "kid": "sig", "use": ["sig"]}, |
@@ -233,3 +234,56 @@ def test_mult_cookie(self): |
233 | 234 | def test_compute_session_state(): |
234 | 235 | hv = compute_session_state("state", "salt", "client_id", "https://example.com/redirect") |
235 | 236 | assert hv == "d21113fbe4b54661ae45f3a3233b0f865ccc646af248274b6fa5664267540e29.salt" |
| 237 | + |
| 238 | + |
| 239 | +class TestCookieHandlerFernetEnc(object): |
| 240 | + @pytest.fixture(autouse=True) |
| 241 | + def make_cookie_content_handler(self): |
| 242 | + cookie_conf = { |
| 243 | + "crypt_config": CRYPT_CONFIG, |
| 244 | + } |
| 245 | + |
| 246 | + self.cookie_handler = CookieHandler(**cookie_conf) |
| 247 | + |
| 248 | + def test_make_cookie_content(self): |
| 249 | + _cookie_info = self.cookie_handler.make_cookie_content("idpyoidc.server", "value", "sso") |
| 250 | + assert _cookie_info |
| 251 | + assert set(_cookie_info.keys()) == {"name", "value", "samesite", "httponly", "secure"} |
| 252 | + assert len(_cookie_info["value"].split("|")) == 2 |
| 253 | + |
| 254 | + def test_make_cookie_content_max_age(self): |
| 255 | + _cookie_info = self.cookie_handler.make_cookie_content( |
| 256 | + "idpyoidc.server", "value", "sso", max_age=3600 |
| 257 | + ) |
| 258 | + assert _cookie_info |
| 259 | + assert set(_cookie_info.keys()) == { |
| 260 | + "name", |
| 261 | + "value", |
| 262 | + "max-age", |
| 263 | + "samesite", |
| 264 | + "httponly", |
| 265 | + "secure", |
| 266 | + } |
| 267 | + assert len(_cookie_info["value"].split("|")) == 2 |
| 268 | + |
| 269 | + def test_read_cookie_info(self): |
| 270 | + _cookie_info = [self.cookie_handler.make_cookie_content("idpyoidc.server", "value", "sso")] |
| 271 | + returned = [{"name": c["name"], "value": c["value"]} for c in _cookie_info] |
| 272 | + _info = self.cookie_handler.parse_cookie("idpyoidc.server", returned) |
| 273 | + assert len(_info) == 1 |
| 274 | + assert set(_info[0].keys()) == {"value", "type", "timestamp"} |
| 275 | + assert _info[0]["value"] == "value" |
| 276 | + assert _info[0]["type"] == "sso" |
| 277 | + |
| 278 | + def test_mult_cookie(self): |
| 279 | + _cookie = [ |
| 280 | + self.cookie_handler.make_cookie_content("idpyoidc.server", "value", "sso"), |
| 281 | + self.cookie_handler.make_cookie_content("idpyoidc.server", "session_state", "session"), |
| 282 | + ] |
| 283 | + assert len(_cookie) == 2 |
| 284 | + _c_info = self.cookie_handler.parse_cookie("idpyoidc.server", _cookie) |
| 285 | + assert len(_c_info) == 2 |
| 286 | + assert _c_info[0]["value"] == "value" |
| 287 | + assert _c_info[0]["type"] == "sso" |
| 288 | + assert _c_info[1]["value"] == "session_state" |
| 289 | + assert _c_info[1]["type"] == "session" |
0 commit comments