def test_request_zen_api_key_access(self): self.mock_client.make_request_for_json.return_value = {'token': '123'} response = self.authentication.request_zen_api_key_access('joe', 'secretkey', zen_auth_address='https://zen:80') self.assertEqual(response, {'token': '123'}) self.mock_client.make_request_for_json.assert_called_with(TNCOClientRequest( method='POST', inject_current_auth=False, override_address='https://zen:80', headers={'Content-Type': 'application/json'}, body=json.dumps({ 'username': '******', 'api_key': 'secretkey' }) )) # Without zen_auth_address response = self.authentication.request_zen_api_key_access('joe', 'secretkey') self.assertEqual(response, {'token': '123'}) self.mock_client.make_request_for_json.assert_called_with(TNCOClientRequest( method='POST', inject_current_auth=False, override_address=None, headers={'Content-Type': 'application/json'}, body=json.dumps({ 'username': '******', 'api_key': 'secretkey' }) ))
def test_legacy_login_older_environments(self): def request_mock(request): if request.endpoint == 'ui/api/login': raise TNCOClientHttpError('Mock error', cause=MagicMock(response=MagicMock(status_code=404, headers={}, body=b''))) else: return {'accessToken': '123', 'expiresIn': 60} self.mock_client.make_request_for_json.side_effect = request_mock response = self.authentication.legacy_login('joe', 'secretpass') self.assertEqual(response, {'accessToken': '123', 'expiresIn': 60}) self.mock_client.make_request_for_json.assert_has_calls([ call( TNCOClientRequest( method='POST', endpoint='ui/api/login', override_address=None, inject_current_auth=False, headers={'Content-Type': 'application/json'}, body=json.dumps({'username': '******', 'password': '******'}) ) ), call( TNCOClientRequest( method='POST', endpoint='api/login', override_address=None, inject_current_auth=False, headers={'Content-Type': 'application/json'}, body=json.dumps({'username': '******', 'password': '******'}) ) ) ])
def all(self) -> List: request = TNCOClientRequest( method='GET', endpoint=self.endpoint, ).add_headers({'Accept': 'application/yaml,application/json'}) request.override_address = getattr(self, 'override_address') if hasattr(self, 'override_address') else None return self._exec_request_and_parse_yaml(request)
def render(self, template_name: str, render_request: Dict) -> Dict: if render_request is None: render_request = {} endpoint = self._render_endpoint(template_name) request = TNCOClientRequest(method='POST', endpoint=endpoint)\ .add_yaml_body(render_request)\ .add_headers({'Accept': 'application/yaml'}) if self.override_address is not None: request.override_address = self.override_address return self._exec_request_and_parse_yaml(request)
def render_raw(self, template_name: str, render_request: Dict) -> str: if render_request is None: render_request = {} endpoint = self._render_raw_endpoint(template_name) request = TNCOClientRequest(method='POST', endpoint=endpoint)\ .add_yaml_body(render_request)\ .add_headers({'Accept': 'text/plain'}) if self.override_address is not None: request.override_address = self.override_address return self._exec_request_and_parse_plaintext(request)
def get(self, name: str, effective: bool = None) -> Dict: query_params = {} if effective is not None: query_params['effective'] = effective request = TNCOClientRequest( method='GET', endpoint=build_relative_endpoint(base_endpoint=self.endpoint, id_value=name) ).add_headers({'Accept': 'application/yaml,application/json'})\ .add_query_params(query_params) request.override_address = getattr(self, 'override_address') if hasattr(self, 'override_address') else None return self._exec_request_and_parse_yaml(request)
def request_zen_api_key_access(self, username: str, api_key: str, zen_auth_address: str = None) -> Dict: body = {'username': username, 'api_key': api_key} request = TNCOClientRequest(method='POST', endpoint=None)\ .disable_auth_token()\ .add_json_body(body) request.override_address = zen_auth_address auth_response = self.base_client.make_request_for_json(request) return auth_response
def test_intent_create_or_upgrade(self): mock_response = MagicMock(headers={'Location': '/api/processes/123'}) self.mock_client.make_request.return_value = mock_response intent = CreateOrUpgradeAssemblyIntent( descriptor_name='assembly::Test::1.0', assembly_name='Test', intended_state='Active', tags={ 'tag1': 'value1', 'tag2': 'value2' }, properties={ 'prop1': 'val1', 'prop2': 'val2' }) response = self.assemblies.intent_create_or_upgrade(intent) self.assertEqual(response, '123') self.mock_client.make_request.assert_called_with( TNCOClientRequest(method='POST', endpoint='api/intent/createOrUpgradeAssembly', headers={'Content-Type': 'application/json'}, body=json.dumps({ 'assemblyName': 'Test', 'descriptorName': 'assembly::Test::1.0', 'properties': { 'prop1': 'val1', 'prop2': 'val2' }, 'tags': { 'tag1': 'value1', 'tag2': 'value2' }, 'intendedState': 'Active', })))
def test_delete(self): response = self.resource_packages.delete('Test') self.assertIsNone(response) self.mock_client.make_request.assert_called_with( TNCOClientRequest( method='DELETE', endpoint='api/resource-manager/resource-packages/Test'))
def test_delete(self): response = self.resource_drivers.delete('123') self.assertIsNone(response) self.mock_client.make_request.assert_called_with( TNCOClientRequest( method='DELETE', endpoint='api/resource-manager/lifecycle-drivers/123'))
def test_render_raw(self): mock_response = 'name: assembly::Result::1.0' self.mock_client.make_request.return_value = MagicMock(text=mock_response) render_request = {'properties': {'propA': 'valueA'}} response = self.descriptor_templates.render_raw('assembly-template::Test::1.0', render_request) self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with(TNCOClientRequest(method='POST', endpoint='api/catalog/descriptorTemplates/assembly-template::Test::1.0/render-raw', body=yaml.safe_dump(render_request), headers={'Accept': 'text/plain', 'Content-Type': 'application/yaml'}, override_address='http://kami.example.com'))
def test_delete(self): response = self.behaviour_assembly_configurations.delete('123') self.assertIsNone(response) self.mock_client.make_request.assert_called_with( TNCOClientRequest( method='DELETE', endpoint='api/behaviour/assemblyConfigurations/123'))
def test_get_topN(self): mock_response = [{'id': '123', 'name': 'Test'}] self.mock_client.make_request.return_value.json.return_value = mock_response response = self.assemblies.get_topN() self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/topology/assemblies'))
def test_create(self): test_obj = {'name': 'Test'} body = json.dumps(test_obj) mock_response = MagicMock(headers={'Location': '/api/behaviour/projects/123'}) self.mock_client.make_request.return_value = mock_response response = self.behaviour_projects.create(test_obj) self.assertEqual(response, {'id': '123', 'name': 'Test'}) self.mock_client.make_request.assert_called_with(TNCOClientRequest(method='POST', endpoint='api/behaviour/projects', headers={'Content-Type': 'application/json'}, body=body))
def test_get(self): mock_response = {'id': 'Test', 'name': 'Test'} self.mock_client.make_request.return_value.json.return_value = mock_response response = self.deployment_locations.get('Test') self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/deploymentLocations/Test'))
def test_all(self): all_locations = [{'id': 'Test', 'name': 'Test'}] self.mock_client.make_request.return_value.json.return_value = all_locations response = self.deployment_locations.all() self.assertEqual(response, all_locations) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/deploymentLocations'))
def test_get(self): mock_response = {'id': 'Test', 'name': 'Test'} self.mock_client.make_request.return_value.json.return_value = mock_response response = self.behaviour_scenarios.get('Test') self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/behaviour/scenarios/Test'))
def test_get(self): mock_response = {'id': '123'} self.mock_client.make_request.return_value.json.return_value = mock_response response = self.processes.get('123') self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/processes/123'))
def test_delete(self): response = self.inf_keys.delete('Test') self.assertIsNone(response) self.mock_client.make_request.assert_called_with( TNCOClientRequest( method='DELETE', endpoint='api/resource-manager/infrastructure-keys/shared/Test' ))
def test_all(self): all_objects = [{'name': 'Test'}] self.mock_client.make_request.return_value.json.return_value = all_objects response = self.resource_managers.all() self.assertEqual(response, all_objects) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/resource-managers'))
def test_get(self): mock_response = {'name': 'Test'} self.mock_client.make_request.return_value.json.return_value = mock_response response = self.resource_managers.get('Test') self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/resource-managers/Test'))
def test_create(self): test_obj = {'type': 'Kubernetes'} body = json.dumps(test_obj) mock_response = MagicMock(headers={'Location': '/api/resource-manager/resource-drivers/123'}) self.mock_client.make_request.return_value = mock_response response = self.resource_drivers.create(test_obj) self.assertEqual(response, {'id': '123', 'type': 'Kubernetes'}) self.mock_client.make_request.assert_called_with(TNCOClientRequest(method='POST', endpoint='api/resource-manager/resource-drivers', headers={'Content-Type': 'application/json'}, body=body))
def _delete(self, id_value: str, endpoint: str = None): if endpoint is None: endpoint = self.endpoint request = TNCOClientRequest( method='DELETE', endpoint=build_relative_endpoint(base_endpoint=endpoint, id_value=id_value) ) self._exec_request(request)
def test_get_metrics(self): mock_response = [{'id': 'Test', 'name': 'TestMetric'}] self.mock_client.make_request.return_value.json.return_value = mock_response response = self.behaviour_scenario_execs.get_metrics('Test') self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/behaviour/executions/Test/metrics'))
def test_update(self, mock_file): response = self.resource_packages.update('Test', '/some/test/file') self.assertIsNone(response) mock_file.assert_called_with('/some/test/file', 'rb') self.mock_client.make_request.assert_called_with( TNCOClientRequest( method='PUT', endpoint='api/resource-manager/resource-packages/Test', files={'file': mock_file.return_value}))
def test_cancel(self): mock_response = {'success': True} self.mock_client.make_request.return_value.json.return_value = mock_response response = self.behaviour_scenario_execs.cancel('Test') self.mock_client.make_request.assert_called_with( TNCOClientRequest(method='POST', endpoint='api/behaviour/executions/Test/cancel', headers={'Accept': 'application/json'})) self.assertEqual(response, mock_response)
def update(self, resource_name: str, resource_pkg_path: Union[str, Path]): with open(resource_pkg_path, 'rb') as resource_pkg: files = {'file': resource_pkg} request = TNCOClientRequest( method='PUT', endpoint=build_relative_endpoint( base_endpoint=self.endpoint, id_value=resource_name)).add_files(files) self._exec_request(request)
def test_get(self): mock_response = {'id': 'Test', 'name': 'Test'} self.mock_client.make_request.return_value.json.return_value = mock_response response = self.inf_keys.get('Test') self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/resource-manager/infrastructure-keys/shared/Test' ))
def test_get_by_type(self): mock_response = {'id': 'Test', 'type': 'Openstack'} self.mock_client.make_request.return_value.json.return_value = mock_response response = self.resource_drivers.get_by_type('Openstack') self.assertEqual(response, mock_response) self.mock_client.make_request.assert_called_with( TNCOClientRequest.build_request_for_json( method='GET', endpoint='api/resource-manager/vim-drivers', query_params={'type': 'Openstack'}))
def _update(self, obj: Dict, id_attr: str = None, endpoint: str = None, response_handler: Callable = None): if id_attr is None: id_attr = self.id_attr if endpoint is None: endpoint = self.endpoint request = TNCOClientRequest( method='PUT', endpoint=build_relative_endpoint_from_data(data_dict=obj, id_attr=id_attr, base_endpoint=endpoint) ).add_json_body(obj) return self._exec_request(request, response_handler=response_handler)