Ejemplo n.º 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.
        """
        key = 'key'
        value = 'value'
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY)
        self.assertEqual(0.0, signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY,
                                      'foo')
        self.assertEqual(0.0, signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY, 123)
        self.assertEqual(signed_item['timestamp'] + 123,
                         signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY,
                                      123.456)
        self.assertEqual(signed_item['timestamp'] + 123.456,
                         signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY, -1)
        self.assertEqual(0.0, signed_item['expires'])
Ejemplo n.º 2
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.
        """
        key = 'key'
        value = 'value'
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY)
        self.assertEqual(0.0, signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY,
                                      'foo')
        self.assertEqual(0.0, signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY,
                                      123)
        self.assertEqual(signed_item['timestamp'] + 123,
                         signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY,
                                      123.456)
        self.assertEqual(signed_item['timestamp'] + 123.456,
                         signed_item['expires'])
        signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY,
                                      -1)
        self.assertEqual(0.0, signed_item['expires'])
Ejemplo n.º 3
0
 def test_modified_item(self):
     """
     The content of the item does not match the hash / signature.
     """
     signed_item = get_signed_item('key', 'value', PUBLIC_KEY, PRIVATE_KEY)
     signed_item['public_key'] = BAD_PUBLIC_KEY
     self.assertFalse(verify_item(signed_item))
Ejemplo n.º 4
0
 def test_signed_item_is_verifiable(self):
     """
     Check that the resulting item is able to be verified.
     """
     signed_item = get_signed_item('key', 'value', PUBLIC_KEY,
                                   PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))
Ejemplo n.º 5
0
 def test_modified_item(self):
     """
     The content of the item does not match the hash / signature.
     """
     signed_item = get_signed_item("key", "value", PUBLIC_KEY, PRIVATE_KEY)
     signed_item["public_key"] = BAD_PUBLIC_KEY
     self.assertFalse(verify_item(signed_item))
Ejemplo n.º 6
0
 def setUp(self):
     """
     Gives us some messages to play with.
     """
     self.uuid = str(uuid4())
     self.node = PUBLIC_KEY
     self.recipient = PUBLIC_KEY
     self.sender = PUBLIC_KEY
     self.reply_port = 1908
     self.value = 1.234
     self.public_key = PUBLIC_KEY
     self.name = 'a_human_readable_key_name'
     self.key = construct_key(self.public_key, self.name)
     signed_dict = get_signed_item(self.key, self.value, self.public_key,
                                   PRIVATE_KEY, 1000)
     self.version = get_version()
     self.timestamp = signed_dict['timestamp']
     self.expires = signed_dict['expires']
     self.created_with = signed_dict['created_with']
     self.signature = signed_dict['signature']
     self.message = 'value'
     self.seal = 'afakesealthatwillnotwork'
     self.nodes = [[self.node, self.version, 'http://192.168.0.1:8080/'], ]
     self.mock_message = Value(self.uuid, self.node, self.node,
                               self.reply_port, self.version, self.seal,
                               self.key, self.value, self.timestamp,
                               self.expires, self.created_with,
                               self.public_key, self.name, self.signature)
Ejemplo n.º 7
0
 def test_does_not_modify_item(self):
     """
     Ensure that the passed in item is itself not modified by the
     verification process.
     """
     signed_item = get_signed_item("key", "value", PUBLIC_KEY, PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))
     self.assertIn("signature", signed_item)
Ejemplo n.º 8
0
 def test_does_not_modify_item(self):
     """
     Ensure that the passed in item is itself not modified by the
     verification process.
     """
     signed_item = get_signed_item('key', 'value', PUBLIC_KEY, PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))
     self.assertIn('signature', signed_item)
Ejemplo n.º 9
0
def test_send_find_value_known(port, version, public_key, private_key):
    """
    Ensures that a "findvalue" message for an existing key is sent to the
    test node and the reply is checked.
    """
    item = get_signed_item('item_name', "the item's value", public_key,
                           private_key)
    signature = item['signature']
    item['uuid'] = str(uuid4())
    item['recipient'] = REMOTE_NODE_PUBLIC_KEY
    item['sender'] = public_key
    item['reply_port'] = 1908
    item['version'] = version
    msg = seal_message('store', item, private_key)
    result = send_message(port, msg)
    assert result.status_code == 200
    item = {
        'uuid': str(uuid.uuid4()),
        'recipient': REMOTE_NODE_PUBLIC_KEY,
        'sender': public_key,
        'reply_port': 1908,
        'version': version,
        'key': construct_key(public_key, 'item_name'),
    }
    msg = seal_message('findvalue', item, private_key)
    result = send_message(port, msg)
    assert result.status_code == 200
    reply = result.json()
    assert reply['uuid'] == item['uuid']
    assert reply['sender'] == REMOTE_NODE_PUBLIC_KEY
    assert reply['recipient'] == public_key
    assert reply['message'] == 'value'
    assert reply['reply_port'] == port
    assert reply['version'] == version
    assert reply['name'] == 'item_name'
    assert reply['value'] == "the item's value"
    assert reply['key'] == construct_key(public_key, 'item_name')
    assert reply['public_key'] == public_key
    assert reply['signature'] == signature
    assert reply['expires'] == 0.0
    assert reply['created_with'] == version
    assert isinstance(reply['timestamp'], float)
    assert 'seal' in reply
    assert check_seal(from_dict(reply))
Ejemplo n.º 10
0
def test_send_find_value_known(port, version, public_key, private_key):
    """
    Ensures that a "findvalue" message for an existing key is sent to the
    test node and the reply is checked.
    """
    item = get_signed_item('item_name', "the item's value", public_key,
                           private_key)
    signature = item['signature']
    item['uuid'] = str(uuid4())
    item['recipient'] = REMOTE_NODE_PUBLIC_KEY
    item['sender'] = public_key
    item['reply_port'] = 1908
    item['version'] = version
    msg = seal_message('store', item, private_key)
    result = send_message(port, msg)
    assert result.status_code == 200
    item = {
        'uuid': str(uuid.uuid4()),
        'recipient': REMOTE_NODE_PUBLIC_KEY,
        'sender': public_key,
        'reply_port': 1908,
        'version': version,
        'key': construct_key(public_key, 'item_name'),
    }
    msg = seal_message('findvalue', item, private_key)
    result = send_message(port, msg)
    assert result.status_code == 200
    reply = result.json()
    assert reply['uuid'] == item['uuid']
    assert reply['sender'] == REMOTE_NODE_PUBLIC_KEY
    assert reply['recipient'] == public_key
    assert reply['message'] == 'value'
    assert reply['reply_port'] == port
    assert reply['version'] == version
    assert reply['name'] == 'item_name'
    assert reply['value'] == "the item's value"
    assert reply['key'] == construct_key(public_key, 'item_name')
    assert reply['public_key'] == public_key
    assert reply['signature'] == signature
    assert reply['expires'] == 0.0
    assert reply['created_with'] == version
    assert isinstance(reply['timestamp'], float)
    assert 'seal' in reply
    assert check_seal(from_dict(reply))
Ejemplo n.º 11
0
def test_send_store(port, version, public_key, private_key):
    """
    Sends and "store" message to the test node and check's the reply.
    """
    item = get_signed_item('item_name', "the item's value", public_key,
                           private_key)
    item['uuid'] = str(uuid4())
    item['recipient'] = REMOTE_NODE_PUBLIC_KEY
    item['sender'] = public_key
    item['reply_port'] = 1908
    item['version'] = version
    msg = seal_message('store', item, private_key)
    result = send_message(port, msg)
    assert result.status_code == 200
    reply = result.json()
    assert reply['uuid'] == item['uuid']
    assert reply['sender'] == REMOTE_NODE_PUBLIC_KEY
    assert reply['recipient'] == public_key
    assert reply['message'] == 'ok'
    assert reply['reply_port'] == port
    assert reply['version'] == version
    assert 'seal' in reply
    assert check_seal(from_dict(reply))
Ejemplo n.º 12
0
def test_send_store(port, version, public_key, private_key):
    """
    Sends and "store" message to the test node and check's the reply.
    """
    item = get_signed_item('item_name', "the item's value", public_key,
                           private_key)
    item['uuid'] = str(uuid4())
    item['recipient'] = REMOTE_NODE_PUBLIC_KEY
    item['sender'] = public_key
    item['reply_port'] = 1908
    item['version'] = version
    msg = seal_message('store', item, private_key)
    result = send_message(port, msg)
    assert result.status_code == 200
    reply = result.json()
    assert reply['uuid'] == item['uuid']
    assert reply['sender'] == REMOTE_NODE_PUBLIC_KEY
    assert reply['recipient'] == public_key
    assert reply['message'] == 'ok'
    assert reply['reply_port'] == port
    assert reply['version'] == version
    assert 'seal' in reply
    assert check_seal(from_dict(reply))
Ejemplo n.º 13
0
 def test_expected_metadata(self):
     """
     Ensure the item (dict) returned from the function contains the
     expected metadata.
     """
     key = 'key'
     value = 'value'
     signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY)
     self.assertIn('timestamp', signed_item)
     self.assertIsInstance(signed_item['timestamp'], float)
     self.assertIn('expires', signed_item)
     self.assertIsInstance(signed_item['expires'], float)
     self.assertIn('created_with', signed_item)
     self.assertEqual(signed_item['created_with'], get_version())
     self.assertIn('public_key', signed_item)
     self.assertEqual(signed_item['public_key'], PUBLIC_KEY)
     self.assertIn('signature', signed_item)
     self.assertIsInstance(signed_item['signature'], str)
     self.assertIn('key', signed_item)
     self.assertIsInstance(signed_item['key'], str)
     self.assertEqual(signed_item['key'], construct_key(PUBLIC_KEY, key))
     self.assertEqual(signed_item['name'], key)
     self.assertEqual(signed_item['value'], value)
Ejemplo n.º 14
0
 def test_expected_metadata(self):
     """
     Ensure the item (dict) returned from the function contains the
     expected metadata.
     """
     key = 'key'
     value = 'value'
     signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY)
     self.assertIn('timestamp', signed_item)
     self.assertIsInstance(signed_item['timestamp'], float)
     self.assertIn('expires', signed_item)
     self.assertIsInstance(signed_item['expires'], float)
     self.assertIn('created_with', signed_item)
     self.assertEqual(signed_item['created_with'], get_version())
     self.assertIn('public_key', signed_item)
     self.assertEqual(signed_item['public_key'], PUBLIC_KEY)
     self.assertIn('signature', signed_item)
     self.assertIsInstance(signed_item['signature'], str)
     self.assertIn('key', signed_item)
     self.assertIsInstance(signed_item['key'], str)
     self.assertEqual(signed_item['key'], construct_key(PUBLIC_KEY, key))
     self.assertEqual(signed_item['name'], key)
     self.assertEqual(signed_item['value'], value)
Ejemplo n.º 15
0
 def test_expected_metadata(self):
     """
     Ensure the item (dict) returned from the function contains the
     expected metadata.
     """
     key = "key"
     value = "value"
     signed_item = get_signed_item(key, value, PUBLIC_KEY, PRIVATE_KEY)
     self.assertIn("timestamp", signed_item)
     self.assertIsInstance(signed_item["timestamp"], float)
     self.assertIn("expires", signed_item)
     self.assertIsInstance(signed_item["expires"], float)
     self.assertIn("created_with", signed_item)
     self.assertEqual(signed_item["created_with"], get_version())
     self.assertIn("public_key", signed_item)
     self.assertEqual(signed_item["public_key"], PUBLIC_KEY)
     self.assertIn("signature", signed_item)
     self.assertIsInstance(signed_item["signature"], str)
     self.assertIn("key", signed_item)
     self.assertIsInstance(signed_item["key"], str)
     self.assertEqual(signed_item["key"], construct_key(PUBLIC_KEY, key))
     self.assertEqual(signed_item["name"], key)
     self.assertEqual(signed_item["value"], value)
Ejemplo n.º 16
0
 def test_good_item(self):
     """
     The good case should pass.
     """
     signed_item = get_signed_item('key', 'value', PUBLIC_KEY, PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))
Ejemplo n.º 17
0
 def test_signed_item_is_verifiable(self):
     """
     Check that the resulting item is able to be verified.
     """
     signed_item = get_signed_item('key', 'value', PUBLIC_KEY, PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))
Ejemplo n.º 18
0
 def test_good_item(self):
     """
     The good case should pass.
     """
     signed_item = get_signed_item("key", "value", PUBLIC_KEY, PRIVATE_KEY)
     self.assertTrue(verify_item(signed_item))