Beispiel #1
0
    def test_expires(self):
        """
        Ensure the expires argument is handled and checked appropriately.

        * If it's not passed the expires metadata defaults to 0.0.
        * It must be a number (int or float).
        * It must be > 0
        * The "expires" metadata must == timestamp + passed in expires arg.
        """
        item = {
            'foo': 'bar',
            'baz': [1, 2, 3]
        }
        signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY)
        self.assertEqual(0.0, signed_item['_p4p2p']['expires'])
        signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY, 'foo')
        self.assertEqual(0.0, signed_item['_p4p2p']['expires'])
        signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY, 123)
        self.assertEqual(signed_item['_p4p2p']['timestamp'] + 123,
                         signed_item['_p4p2p']['expires'])
        signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY, 123.456)
        self.assertEqual(signed_item['_p4p2p']['timestamp'] + 123.456,
                         signed_item['_p4p2p']['expires'])
        signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY, -1)
        self.assertEqual(0.0, signed_item['_p4p2p']['expires'])
Beispiel #2
0
 def test_original_item_unaffected(self):
     """
     Ensure the item (dict) passed into the function is not changed.
     """
     item = {
         'foo': 'bar',
         'baz': [1, 2, 3]
     }
     get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY)
     self.assertNotIn('_p4p2p', item)
     self.assertEqual(2, len(item))
     self.assertIn('foo', item)
     self.assertIn('baz', item)
     self.assertEqual(item['foo'], 'bar')
     self.assertEqual(item['baz'], [1, 2, 3])
Beispiel #3
0
 def test_signed_item_is_verifiable(self):
     """
     Check that the resulting item is able to be verified.
     """
     item = {
         'foo': 'bar',
         'baz': [1, 2, 3]
     }
     signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))
Beispiel #4
0
 def test_good_item(self):
     """
     The good case should pass.
     """
     item = {
         'foo': 'bar',
         'baz': [1, 2, 3]
     }
     signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))
Beispiel #5
0
 def test_modified_item(self):
     """
     The content of the item does not match the hash / signature.
     """
     item = {
         'foo': 'bar',
         'baz': [1, 2, 3]
     }
     signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY)
     signed_item['_p4p2p']['public_key'] = BAD_PUBLIC_KEY
     self.assertFalse(verify_item(item))
Beispiel #6
0
 def test_expected_metadata(self):
     """
     Ensure the item (dict) returned from the function contains the
     expected metadata.
     """
     item = {
         'foo': 'bar',
         'baz': [1, 2, 3]
     }
     signed_item = get_signed_item(item, PUBLIC_KEY, PRIVATE_KEY)
     self.assertIn('_p4p2p', signed_item)
     metadata = signed_item['_p4p2p']
     self.assertIn('timestamp', metadata)
     self.assertIsInstance(metadata['timestamp'], float)
     self.assertIn('expires', metadata)
     self.assertIsInstance(metadata['expires'], float)
     self.assertIn('version', metadata)
     self.assertIsInstance(metadata['version'], str)
     self.assertIn('public_key', metadata)
     self.assertIsInstance(metadata['public_key'], str)
     self.assertIn('signature', metadata)
     self.assertIsInstance(metadata['signature'], str)
     self.assertEqual(5, len(metadata))