예제 #1
0
class ResourceReferenceTest(unittest.TestCase):

    def setUp(self):
        self._res_a_1 = TestResourceClassA('res'),
        self._res_a_2 = TestResourceClassA('res')
        self._res_b_1 = TestResourceClassB('res')
        self._device_port_spec_1 = {'device_name': 'bridge-000-001',
                                    'port_id': 1}
        self._device_port_spec_2 = {'device_name': 'bridge-000-001',
                                    'port_id': 2}
        self._setter_uuid = 'set_uuid'
        self._setter_type = 'set_uuid'
        self._ref1 = ResourceReference(self._res_a_1,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref2 = ResourceReference(self._res_a_1,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref3 = ResourceReference(self._res_a_2,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref4 = ResourceReference(self._res_b_1,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref5 = ResourceReference(self._res_a_1,
                                       self._setter_type,
                                       self._device_port_spec_1)
        self._ref6 = ResourceReference(self._res_a_1,
                                       self._setter_uuid,
                                       self._device_port_spec_2)

    def test_resource_reference_eq(self):
        # The same referencing resource object, same setter and specs.
        self.assertEqual(self._ref1, self._ref2)
        # The same reference classes but different instances.
        self.assertNotEqual(self._ref1, self._ref3)
        # The same reference classes but different instances.
        self.assertNotEqual(self._ref1, self._ref4)
        # Different attribute setters.
        self.assertNotEqual(self._ref1, self._ref5)
        # Different reference specs.
        self.assertNotEqual(self._ref1, self._ref6)

    def test_get_reference_spec(self):
        self.assertEqual(self._device_port_spec_1,
                         self._ref1.get_reference_spec())

    def test_resolve_reference(self):
        mock_resource = MagicMock()
        ref = ResourceReference(mock_resource,
                                self._setter_uuid,
                                self._device_port_spec_1)
        ref.resolve_reference('uuid-000')

        mock_resource.set_uuid.assert_called_with('uuid-000')