def test_make_message_missing_fields(self): """ The correct fields must all exist in the provided data dictionary. """ with self.assertRaises(ValueError) as cm: make_message(Ping, {'foo': 1, 'bar': 2}) ex = cm.exception self.assertEqual(2, ex.args[0]) self.assertEqual(ERRORS[2], ex.args[1]) details = ex.args[2] self.assertEqual('Missing field.', details['uuid']) self.assertEqual('Missing field.', details['node']) self.assertEqual('Missing field.', details['version'])
def test_make_message_bad_values(self): """ The values to be used to instantiate the class should be valid. If not the correct exception is raised. """ with self.assertRaises(ValueError) as cm: make_message(Ping, {'uuid': 1, 'node': 2, 'version': 3}) ex = cm.exception self.assertEqual(2, ex.args[0]) self.assertEqual(ERRORS[2], ex.args[1]) details = ex.args[2] self.assertEqual('Invalid value.', details['uuid']) self.assertEqual('Invalid value.', details['node']) self.assertEqual('Invalid value.', details['version'])
def test_make_message(self): """ The good case returns an instance of the given class based upon the data provided. """ uuid = str(uuid4()) node = '9876543210abcd'.decode('hex') result = make_message(Ping, {'uuid': uuid, 'node': node, 'version': '0.1'}) self.assertIsInstance(result, Ping) self.assertEqual(uuid, result.uuid) self.assertEqual(node, result.node) self.assertEqual('0.1', result.version)