Exemple #1
0
 def test_cache_eviction_based_on_time(self):
     cache = FIFOCache(cache_timeout=0.1)
     verifier = DummyVerifier(cache=cache)
     # Prime the cache by verifying an assertion.
     assertion = self.verifier.make_assertion("*****@*****.**", "")
     self.assertTrue(verifier.verify(assertion))
     # Make it error out if re-fetching the keys
     def fetch_public_key(hostname):
         raise RuntimeError("key fetch disabled")
     verifier.fetch_public_key = fetch_public_key
     # It should be in the cache, so this works fine.
     verifier.verify(assertion)
     # But after sleeping it gets evicted and the error is triggered.
     time.sleep(0.1)
     self.assertRaises(RuntimeError, verifier.verify, assertion)
Exemple #2
0
    def setUp(self):
        self.root = self.conf_get('main', 'url')
        self.vusers = int(self.conf_get('main', 'vusers'))
        self.verifier = DummyVerifier
        key = DummyVerifier.fetch_public_key("browserid.org")
        key = json.dumps({"public-key": key})

        def urlopen(url, data): # NOQA
            class response(object):
                @staticmethod
                def read():
                    return key
            return response

        self.verifier.urlopen = urlopen
Exemple #3
0
    def test_cache_eviction_based_on_time(self):
        cache = FIFOCache(cache_timeout=0.1)
        verifier = DummyVerifier(cache=cache)
        # Prime the cache by verifying an assertion.
        assertion = self.verifier.make_assertion("*****@*****.**", "")
        self.assertTrue(verifier.verify(assertion))

        # Make it error out if re-fetching the keys
        def fetch_public_key(hostname):
            raise RuntimeError("key fetch disabled")

        verifier.fetch_public_key = fetch_public_key
        # It should be in the cache, so this works fine.
        verifier.verify(assertion)
        # But after sleeping it gets evicted and the error is triggered.
        time.sleep(0.1)
        self.assertRaises(RuntimeError, verifier.verify, assertion)
Exemple #4
0
 def test_cache_eviction_during_write(self):
     cache = FIFOCache(cache_timeout=0.1)
     verifier = DummyVerifier(cache=cache)
     # Prime the cache by verifying an assertion.
     assertion1 = self.verifier.make_assertion("*****@*****.**", "", "1.com")
     self.assertTrue(verifier.verify(assertion1))
     self.assertEquals(len(cache), 1)
     # Let that cached key expire
     time.sleep(0.1)
     # Now grab a different key; caching it should purge the expired key.
     assertion2 = self.verifier.make_assertion("*****@*****.**", "", "2.com")
     self.assertTrue(verifier.verify(assertion2))
     self.assertEquals(len(cache), 1)
     # Check that only the second entry is in cache.
     def fetch_public_key(hostname):
         raise RuntimeError("key fetch disabled")
     verifier.fetch_public_key = fetch_public_key
     self.assertTrue(verifier.verify(assertion2))
     self.assertRaises(RuntimeError, verifier.verify, assertion1)
Exemple #5
0
 def test_cache_eviction_based_on_size(self):
     cache = FIFOCache(max_size=2)
     verifier = DummyVerifier(cache=cache)
     # Prime the cache by verifying some assertions.
     assertion1 = self.verifier.make_assertion("*****@*****.**", "", "1.com")
     self.assertTrue(verifier.verify(assertion1))
     assertion2 = self.verifier.make_assertion("*****@*****.**", "", "2.com")
     self.assertTrue(verifier.verify(assertion2))
     self.assertEquals(len(cache), 2)
     # Hitting a third host should evict the first public key.
     assertion3 = self.verifier.make_assertion("*****@*****.**", "", "3.com")
     self.assertTrue(verifier.verify(assertion3))
     self.assertEquals(len(cache), 2)
     # Make it error out if re-fetching any keys
     def fetch_public_key(hostname):
         raise RuntimeError("key fetch disabled")
     verifier.fetch_public_key = fetch_public_key
     # It should have to re-fetch for 1, but not 2.
     self.assertTrue(verifier.verify(assertion2))
     self.assertRaises(RuntimeError, verifier.verify, assertion1)
Exemple #6
0
    def test_cache_eviction_during_write(self):
        cache = FIFOCache(cache_timeout=0.1)
        verifier = DummyVerifier(cache=cache)
        # Prime the cache by verifying an assertion.
        assertion1 = self.verifier.make_assertion("*****@*****.**", "", "1.com")
        self.assertTrue(verifier.verify(assertion1))
        self.assertEquals(len(cache), 1)
        # Let that cached key expire
        time.sleep(0.1)
        # Now grab a different key; caching it should purge the expired key.
        assertion2 = self.verifier.make_assertion("*****@*****.**", "", "2.com")
        self.assertTrue(verifier.verify(assertion2))
        self.assertEquals(len(cache), 1)

        # Check that only the second entry is in cache.
        def fetch_public_key(hostname):
            raise RuntimeError("key fetch disabled")

        verifier.fetch_public_key = fetch_public_key
        self.assertTrue(verifier.verify(assertion2))
        self.assertRaises(RuntimeError, verifier.verify, assertion1)
Exemple #7
0
    def test_cache_eviction_based_on_size(self):
        cache = FIFOCache(max_size=2)
        verifier = DummyVerifier(cache=cache)
        # Prime the cache by verifying some assertions.
        assertion1 = self.verifier.make_assertion("*****@*****.**", "", "1.com")
        self.assertTrue(verifier.verify(assertion1))
        assertion2 = self.verifier.make_assertion("*****@*****.**", "", "2.com")
        self.assertTrue(verifier.verify(assertion2))
        self.assertEquals(len(cache), 2)
        # Hitting a third host should evict the first public key.
        assertion3 = self.verifier.make_assertion("*****@*****.**", "", "3.com")
        self.assertTrue(verifier.verify(assertion3))
        self.assertEquals(len(cache), 2)

        # Make it error out if re-fetching any keys
        def fetch_public_key(hostname):
            raise RuntimeError("key fetch disabled")

        verifier.fetch_public_key = fetch_public_key
        # It should have to re-fetch for 1, but not 2.
        self.assertTrue(verifier.verify(assertion2))
        self.assertRaises(RuntimeError, verifier.verify, assertion1)
Exemple #8
0
 def read():
     key = DummyVerifier.fetch_public_key("browserid.org")
     return json.dumps({"public-key": key})
Exemple #9
0
 def read():
     key = DummyVerifier.fetch_public_key("browserid.org")
     return json.dumps({"public-key": key})