summaryrefslogtreecommitdiff
path: root/tests/test_32_cache.py
diff options
context:
space:
mode:
authorRoland Hedberg <roland.hedberg@adm.umu.se>2012-05-23 18:56:51 +0200
committerRoland Hedberg <roland.hedberg@adm.umu.se>2012-05-23 18:56:51 +0200
commit1d7b2964d16b5c4443a3e7037d1bffe281726fc6 (patch)
treef191828115e6f89419cb8c2b34652546bab37889 /tests/test_32_cache.py
downloadpysaml2-1d7b2964d16b5c4443a3e7037d1bffe281726fc6.tar.gz
Initial add0.4.2
Diffstat (limited to 'tests/test_32_cache.py')
-rw-r--r--tests/test_32_cache.py118
1 files changed, 118 insertions, 0 deletions
diff --git a/tests/test_32_cache.py b/tests/test_32_cache.py
new file mode 100644
index 00000000..9fc4c410
--- /dev/null
+++ b/tests/test_32_cache.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+
+import time
+import py
+from saml2.cache import Cache
+from saml2.time_util import in_a_while, str_to_time
+
+SESSION_INFO_PATTERN = {"ava":{}, "came from":"", "not_on_or_after":0,
+ "issuer":"", "session_id":-1}
+
+
+def _eq(l1,l2):
+ return set(l1) == set(l2)
+
+
+class TestClass:
+ def setup_class(self):
+ self.cache = Cache()
+
+
+ def test_set(self):
+ not_on_or_after = str_to_time(in_a_while(days=1))
+ session_info = SESSION_INFO_PATTERN.copy()
+ session_info["ava"] = {"givenName":["Derek"]}
+ self.cache.set("1234", "abcd", session_info,
+ not_on_or_after)
+
+ (ava, inactive) = self.cache.get_identity("1234")
+ assert inactive == []
+ assert ava.keys() == ["givenName"]
+ assert ava["givenName"] == ["Derek"]
+
+ def test_add_ava_info(self):
+ not_on_or_after = str_to_time(in_a_while(days=1))
+ session_info = SESSION_INFO_PATTERN.copy()
+ session_info["ava"] = {"surName":["Jeter"]}
+ self.cache.set("1234", "bcde", session_info,
+ not_on_or_after)
+
+ (ava, inactive) = self.cache.get_identity("1234")
+ assert inactive == []
+ assert _eq(ava.keys(), ["givenName","surName"])
+ assert ava["givenName"] == ["Derek"]
+ assert ava["surName"] == ["Jeter"]
+
+ 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"])
+ py.test.raises(Exception, "self.cache.entities('6666')")
+
+ def test_remove_info(self):
+ self.cache.reset("1234", "bcde")
+ assert self.cache.active("1234", "bcde") == False
+ assert self.cache.active("1234", "abcd")
+
+ (ava, inactive) = self.cache.get_identity("1234")
+ assert inactive == ['bcde']
+ assert _eq(ava.keys(), ["givenName"])
+ assert ava["givenName"] == ["Derek"]
+
+ def test_active(self):
+ assert self.cache.active("1234", "bcde") == False
+ assert self.cache.active("1234", "abcd")
+
+ def test_subjects(self):
+ assert self.cache.subjects() == ["1234"]
+
+ def test_second_subject(self):
+ 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", "abcd", session_info,
+ not_on_or_after)
+
+ (ava, inactive) = self.cache.get_identity("9876")
+ assert inactive == []
+ assert _eq(ava.keys(), ["givenName","surName"])
+ assert ava["givenName"] == ["Ichiro"]
+ 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