Beispiel #1
0
    def test_resource_ref_update(self, mock_session):
        mock_session.configure_mock(base_url=BASE)
        mock_session.make_url = ContrailAPISession.make_url.__get__(mock_session)
        mock_session.add_ref = ContrailAPISession.add_ref.__get__(mock_session)
        mock_session.remove_ref = ContrailAPISession.remove_ref.__get__(mock_session)
        mock_session._ref_update = ContrailAPISession._ref_update.__get__(mock_session)

        r1 = Resource('foo', uuid='2caf30aa-d197-40be-82dc-3bac4ca91adb',
                      fq_name='domain:foo')
        r2 = Resource('bar', uuid='5d085b74-2dcc-4180-8284-10a56f9ed318',
                      fq_name='domain:bar')

        mock_session.get_json.return_value = {
            'foo': {
                'uuid': '2caf30aa-d197-40be-82dc-3bac4ca91adb',
                'fq_name': ['domain', 'foo'],
                'bar_refs': [
                    {
                        'attr': {
                            'prop': 'value'
                        },
                        'to': ['domain', 'bar'],
                        'uuid': '5d085b74-2dcc-4180-8284-10a56f9ed318'
                    }
                ]
            }
        }
        r1.add_ref(r2, attr={'prop': 'value'})
        data = {
            'type': r1.type,
            'uuid': r1.uuid,
            'ref-type': r2.type,
            'ref-fq-name': list(r2.fq_name),
            'ref-uuid': r2.uuid,
            'operation': 'ADD',
            'attr': {
                'prop': 'value'
            }
        }
        mock_session.post_json.assert_called_with(BASE + '/ref-update', data)
        self.assertTrue(r1['bar_refs'][0].uuid, r2.uuid)

        mock_session.get_json.return_value = {
            'foo': {
                'uuid': '2caf30aa-d197-40be-82dc-3bac4ca91adb',
                'fq_name': ['domain', 'foo']
            }
        }
        r1.remove_ref(r2)
        data = {
            'type': r1.type,
            'uuid': r1.uuid,
            'ref-type': r2.type,
            'ref-fq-name': list(r2.fq_name),
            'ref-uuid': r2.uuid,
            'operation': 'DELETE',
            'attr': None
        }
        mock_session.post_json.assert_called_with(BASE + '/ref-update', data)
        self.assertTrue('bar_refs' not in r1)