diff --git a/tests/test_5_cache.py b/tests/test_5_cache.py index e355725..46dc783 100644 --- a/tests/test_5_cache.py +++ b/tests/test_5_cache.py @@ -1,8 +1,13 @@ #!/usr/bin/env python +import time + from saml2.cache import Cache from saml2.time_util import in_a_while, str_to_time -from saml2.client import SESSION_INFO + +SESSION_INFO_PATTERN = {"ava":{}, "came from":"", "not_on_or_after":0, + "issuer":"", "session_id":-1} + def _eq(l1,l2): return set(l1) == set(l2) @@ -15,7 +20,7 @@ class TestClass: def test_0(self): not_on_or_after = str_to_time(in_a_while(days=1)) - session_info = SESSION_INFO.copy() + session_info = SESSION_INFO_PATTERN.copy() session_info["ava"] = {"givenName":["Derek"]} self.cache.set("1234", "abcd", session_info, not_on_or_after) @@ -25,9 +30,9 @@ class TestClass: assert ava.keys() == ["givenName"] assert ava["givenName"] == ["Derek"] - def test_1(self): + def test_add_ava_info(self): not_on_or_after = str_to_time(in_a_while(days=1)) - session_info = SESSION_INFO.copy() + session_info = SESSION_INFO_PATTERN.copy() session_info["ava"] = {"surName":["Jeter"]} self.cache.set("1234", "bcde", session_info, not_on_or_after) @@ -38,16 +43,20 @@ class TestClass: assert ava["givenName"] == ["Derek"] assert ava["surName"] == ["Jeter"] - def test_2(self): + def test_from_one_target_source(self): session_info = self.cache.get("1234","bcde") ava = session_info["ava"] assert _eq(ava.keys(), ["surName"]) assert ava["surName"] == ["Jeter"] + session_info = self.cache.get("1234","abcd") + ava = session_info["ava"] + assert _eq(ava.keys(), ["givenName"]) + assert ava["givenName"] == ["Derek"] def test_entities(self): assert _eq(self.cache.entities("1234"), ["abcd", "bcde"]) - def test_4(self): + def test_remove_info(self): self.cache.reset("1234", "bcde") assert self.cache.active("1234","bcde") == False assert self.cache.active("1234","abcd") @@ -62,7 +71,7 @@ class TestClass: def test_second_subject(self): not_on_or_after = str_to_time(in_a_while(days=1)) - session_info = SESSION_INFO.copy() + session_info = SESSION_INFO_PATTERN.copy() session_info["ava"] = {"givenName":["Ichiro"], "surName":["Suzuki"]} self.cache.set("9876", "abcd", session_info, @@ -75,3 +84,30 @@ class TestClass: assert ava["surName"] == ["Suzuki"] assert _eq(self.cache.subjects(), ["1234","9876"]) + def test_receivers(self): + assert _eq(self.cache.receivers("9876"), ["abcd"]) + + not_on_or_after = str_to_time(in_a_while(days=1)) + session_info = SESSION_INFO_PATTERN.copy() + session_info["ava"] = {"givenName":["Ichiro"], + "surName":["Suzuki"]} + self.cache.set("9876", "bcde", session_info, + not_on_or_after) + + assert _eq(self.cache.receivers("9876"), ["abcd", "bcde"]) + assert _eq(self.cache.subjects(), ["1234","9876"]) + + def test_timeout(self): + not_on_or_after = str_to_time(in_a_while(seconds=1)) + session_info = SESSION_INFO_PATTERN.copy() + session_info["ava"] = {"givenName":["Alex"], + "surName":["Rodriguez"]} + self.cache.set("1000", "bcde", session_info, + not_on_or_after) + + time.sleep(2) + (ava, inactive) = self.cache.get_identity("1000") + assert inactive == ["bcde"] + assert ava == {} + + \ No newline at end of file