def test_get_one_with_parameters(self, mock_retrieve): # Setup p = manager_models.DeploymentPlan('a', 'n', 'd') p.add_parameters( manager_models.PlanParameter( name="Param 1", label="1", default=2, hidden=False, description="1", value=1, param_type='number', constraints=''), manager_models.PlanParameter( name="Param 2", label="2", default=['a', ], hidden=False, description="2", value=['a', 'b'], param_type='comma_delimited_list', constraints=''), manager_models.PlanParameter( name="Param 3", label="3", default={'a': 2}, hidden=False, description="3", value={'a': 1}, param_type='json', constraints=''), ) mock_retrieve.return_value = p # Test url = URL_PLANS + '/' + 'qwerty12345' response = self.app.get(url) result = response.json # Verify mock_retrieve.assert_called_once_with('qwerty12345') self.assertEqual(response.status_int, 200) self.assertEqual(result['name'], 'n')
def retrieve_plan(self, plan_uuid): """Loads the given plan. :type plan_uuid: str :rtype: tuskar.manager.models.DeploymentPlan :raises tuskar.storage.exceptions.UnknownUUID: if there is no plan with the given UUID """ # Load the plan from the database. db_plan = self.plan_store.retrieve(plan_uuid) # Parse the plan into the template model. master_template = parser.parse_template( db_plan.master_template.contents) environment = parser.parse_environment( db_plan.environment_file.contents) # Create the Tuskar model for the plan. deployment_plan = models.DeploymentPlan( plan_uuid, db_plan.name, master_template.description, created_at=db_plan.created_at, updated_at=db_plan.updated_at, ) roles = self._find_roles(environment) deployment_plan.add_roles(*roles) params = self._find_parameters(master_template, environment) deployment_plan.add_parameters(*params) return deployment_plan
def test_get_all(self, mock_list): # Setup mock_list.return_value = [ manager_models.DeploymentPlan('a', 'n1', 'd1'), manager_models.DeploymentPlan('b', 'n2', 'd2'), ] # Test response = self.app.get(URL_PLANS) result = response.json # Verify mock_list.assert_called_once() self.assertEqual(response.status_int, 200) self.assertTrue(isinstance(result, list)) self.assertEqual(2, len(result)) self.assertEqual(result[0]['name'], 'n1') self.assertEqual(result[1]['name'], 'n2')
def test_get_one(self, mock_retrieve): # Setup p = manager_models.DeploymentPlan('a', 'n', 'd') mock_retrieve.return_value = p # Test url = URL_PLANS + '/' + 'qwerty12345' response = self.app.get(url) result = response.json # Verify mock_retrieve.assert_called_once_with('qwerty12345') self.assertEqual(response.status_int, 200) self.assertEqual(result['name'], 'n')
def test_delete(self, mock_remove): # Setup p = manager_models.DeploymentPlan('a', 'n', 'd') mock_remove.return_value = p # Test response = self.app.delete_json(URL_PLAN_ROLES + '/role_uuid') result = response.json # Verify mock_remove.assert_called_once_with('plan_uuid', 'role_uuid') self.assertEqual(response.status_int, 200) self.assertEqual(result['uuid'], 'a') self.assertEqual(result['name'], 'n')
def test_post(self, mock_add): # Setup p = manager_models.DeploymentPlan('a', 'n', 'd') mock_add.return_value = p # Test role_data = {'uuid': 'qwerty12345'} response = self.app.post_json(URL_PLAN_ROLES, params=role_data) result = response.json # Verify mock_add.assert_called_once_with('plan_uuid', 'qwerty12345') self.assertEqual(response.status_int, 201) self.assertEqual(result['uuid'], 'a') self.assertEqual(result['name'], 'n')
def test_post(self, mock_create): # Setup p = manager_models.DeploymentPlan('a', 'n', 'd') mock_create.return_value = p # Test plan_data = {'name': 'new', 'description': 'desc'} response = self.app.post_json(URL_PLANS, params=plan_data) result = response.json # Verify mock_create.assert_called_once_with('new', 'desc') self.assertEqual(response.status_int, 201) self.assertEqual(result['uuid'], p.uuid) self.assertEqual(result['name'], p.name) self.assertEqual(result['description'], p.description)
def test_patch(self, mock_set): # Setup p = manager_models.DeploymentPlan('a', 'n', 'd') mock_set.return_value = p # Test values = [{'name': 'foo', 'value': 'bar'}] url = URL_PLANS + '/' + 'qwerty12345' response = self.app.patch_json(url, values) result = response.json # Verify mock_set.assert_called_once() self.assertEqual(mock_set.call_args[0][0], 'qwerty12345') self.assertEqual(mock_set.call_args[0][1][0].name, 'foo') self.assertEqual(mock_set.call_args[0][1][0].value, 'bar') self.assertEqual(response.status_int, 201) self.assertEqual(result['name'], p.name)