diff --git a/awx/main/tests/functional/api/test_job_runtime_params.py b/awx/main/tests/functional/api/test_job_runtime_params.py index cc09c8e6b7..afdd002828 100644 --- a/awx/main/tests/functional/api/test_job_runtime_params.py +++ b/awx/main/tests/functional/api/test_job_runtime_params.py @@ -49,7 +49,7 @@ def test_job_ignore_unprompted_vars(runtime_data, job_template_prompts, post, us response = post(reverse('api:job_template_launch', args=[job_template.pk]), runtime_data, user('admin', True)) - assert response.status_code == 202 + assert response.status_code == 201 job_id = response.data['job'] job_obj = Job.objects.get(pk=job_id) @@ -80,7 +80,7 @@ def test_job_accept_prompted_vars(runtime_data, job_template_prompts, post, user response = post(reverse('api:job_template_launch', args=[job_template.pk]), runtime_data, user('admin', True)) - assert response.status_code == 202 + assert response.status_code == 201 job_id = response.data['job'] job_obj = Job.objects.get(pk=job_id) @@ -150,7 +150,7 @@ def test_job_launch_fails_without_inventory_access(deploy_jobtemplate, machine_c response = post(reverse('api:job_template_launch', args=[deploy_jobtemplate.pk]), {}, common_user) - assert response.status_code == 202 + assert response.status_code == 201 # Assure that giving an inventory without access to the inventory blocks the launch new_inv = deploy_jobtemplate.project.organization.inventories.create(name="user-can-not-use") @@ -170,7 +170,7 @@ def test_job_relaunch_prompted_vars(runtime_data, job_template_prompts, post, us first_response = post(reverse('api:job_template_launch', args=[job_template.pk]), runtime_data, admin_user) - assert first_response.status_code == 202 + assert first_response.status_code == 201 original_job = Job.objects.get(pk=first_response.data['job']) # Launch a second job as a relaunch of the first @@ -179,7 +179,7 @@ def test_job_relaunch_prompted_vars(runtime_data, job_template_prompts, post, us relaunched_job = Job.objects.get(pk=second_response.data['job']) # Check that job data matches the original runtime variables - assert first_response.status_code == 202 + assert first_response.status_code == 201 assert 'job_launch_var' in yaml.load(relaunched_job.extra_vars) assert relaunched_job.limit == runtime_data['limit'] assert relaunched_job.job_type == runtime_data['job_type'] @@ -189,6 +189,7 @@ def test_job_relaunch_prompted_vars(runtime_data, job_template_prompts, post, us @pytest.mark.django_db def test_job_launch_JT_with_validation(machine_credential, deploy_jobtemplate): deploy_jobtemplate.extra_vars = '{"job_template_var": 3}' + deploy_jobtemplate.credential = None deploy_jobtemplate.save() kv = dict(extra_vars={"job_launch_var": 4}, credential=machine_credential.id) @@ -205,6 +206,7 @@ def test_job_launch_JT_with_validation(machine_credential, deploy_jobtemplate): assert result assert 'job_template_var' in final_job_extra_vars assert 'job_launch_var' in final_job_extra_vars + assert job_obj.credential.id == machine_credential.id @pytest.mark.django_db @pytest.mark.job_runtime_vars diff --git a/awx/main/tests/old/jobs/job_launch.py b/awx/main/tests/old/jobs/job_launch.py index 57c87a1b82..27a44ddb21 100644 --- a/awx/main/tests/old/jobs/job_launch.py +++ b/awx/main/tests/old/jobs/job_launch.py @@ -68,7 +68,7 @@ class JobTemplateLaunchTest(BaseJobTestMixin, django.test.TransactionTestCase): def test_credential_implicit(self): # Implicit, attached credentials with self.current_user(self.user_sue): - response = self.post(self.launch_url, {}, expect=202) + response = self.post(self.launch_url, {}, expect=201) j = Job.objects.get(pk=response['job']) self.assertTrue(j.status == 'new') @@ -76,7 +76,7 @@ class JobTemplateLaunchTest(BaseJobTestMixin, django.test.TransactionTestCase): # Sending extra_vars as a JSON string, implicit credentials with self.current_user(self.user_sue): data = dict(extra_vars = '{\"a\":3}') - response = self.post(self.launch_url, data, expect=202) + response = self.post(self.launch_url, data, expect=201) j = Job.objects.get(pk=response['job']) ev_dict = yaml.load(j.extra_vars) self.assertIn('a', ev_dict) @@ -87,7 +87,7 @@ class JobTemplateLaunchTest(BaseJobTestMixin, django.test.TransactionTestCase): # Sending extra_vars as a JSON string, implicit credentials with self.current_user(self.user_sue): data = dict(extra_vars = 'a: 3') - response = self.post(self.launch_url, data, expect=202) + response = self.post(self.launch_url, data, expect=201) j = Job.objects.get(pk=response['job']) ev_dict = yaml.load(j.extra_vars) self.assertIn('a', ev_dict) @@ -98,7 +98,7 @@ class JobTemplateLaunchTest(BaseJobTestMixin, django.test.TransactionTestCase): # Explicit, credential with self.current_user(self.user_sue): self.cred_sue.delete() - response = self.post(self.launch_url, {'credential': self.cred_doug.pk}, expect=202) + response = self.post(self.launch_url, {'credential': self.cred_doug.pk}, expect=201) j = Job.objects.get(pk=response['job']) self.assertEqual(j.status, 'new') self.assertEqual(j.credential.pk, self.cred_doug.pk) @@ -107,26 +107,26 @@ class JobTemplateLaunchTest(BaseJobTestMixin, django.test.TransactionTestCase): # Explicit, credential with self.current_user(self.user_sue): self.cred_sue.delete() - response = self.post(self.launch_url, {'credential_id': self.cred_doug.pk}, expect=202) + response = self.post(self.launch_url, {'credential_id': self.cred_doug.pk}, expect=201) j = Job.objects.get(pk=response['job']) self.assertEqual(j.status, 'new') self.assertEqual(j.credential.pk, self.cred_doug.pk) - def test_credential_override(self): + def test_credential_override_reject(self): # Explicit, credential with self.current_user(self.user_sue): - response = self.post(self.launch_url, {'credential': self.cred_doug.pk}, expect=202) + response = self.post(self.launch_url, {'credential': self.cred_doug.pk}, expect=201) j = Job.objects.get(pk=response['job']) self.assertEqual(j.status, 'new') - self.assertEqual(j.credential.pk, self.cred_doug.pk) + self.assertEqual(j.credential.pk, self.cred_sue.pk) - def test_credential_override_via_credential_id(self): + def test_credential_override_via_credential_id_reject(self): # Explicit, credential with self.current_user(self.user_sue): - response = self.post(self.launch_url, {'credential_id': self.cred_doug.pk}, expect=202) + response = self.post(self.launch_url, {'credential_id': self.cred_doug.pk}, expect=201) j = Job.objects.get(pk=response['job']) self.assertEqual(j.status, 'new') - self.assertEqual(j.credential.pk, self.cred_doug.pk) + self.assertEqual(j.credential.pk, self.cred_sue.pk) def test_bad_credential_launch_fail(self): # Can't launch a job template without a credential defined (or if we @@ -212,7 +212,7 @@ class JobTemplateLaunchPasswordsTest(BaseJobTestMixin, django.test.TransactionTe def test_explicit_cred_with_ask_password(self): with self.current_user(self.user_sue): - response = self.post(self.launch_url, {'ssh_password': 'whatever'}, expect=202) + response = self.post(self.launch_url, {'ssh_password': 'whatever'}, expect=201) j = Job.objects.get(pk=response['job']) self.assertEqual(j.status, 'new') diff --git a/awx/main/tests/old/jobs/jobs_monolithic.py b/awx/main/tests/old/jobs/jobs_monolithic.py index e174fd55d5..6151fe15c7 100644 --- a/awx/main/tests/old/jobs/jobs_monolithic.py +++ b/awx/main/tests/old/jobs/jobs_monolithic.py @@ -1087,7 +1087,7 @@ class JobTransactionTest(BaseJobTestMixin, django.test.LiveServerTestCase): response = self.get(url) self.assertTrue(response['can_start']) self.assertFalse(response['passwords_needed_to_start']) - response = self.post(url, {}, expect=202) + response = self.post(url, {}, expect=201) job = Job.objects.get(pk=job.pk) self.assertEqual(job.status, 'successful', job.result_stdout) self.assertFalse(errors) @@ -1146,14 +1146,14 @@ class JobTemplateSurveyTest(BaseJobTestMixin, django.test.TransactionTestCase): # should return, and should be able to launch template without error. response = self.get(launch_url) self.assertFalse(response['survey_enabled']) - self.post(launch_url, {}, expect=202) + self.post(launch_url, {}, expect=201) # Now post a survey spec and check that the answer is set in the # job's extra vars. self.post(url, json.loads(TEST_SIMPLE_REQUIRED_SURVEY), expect=200) response = self.get(launch_url) self.assertTrue(response['survey_enabled']) self.assertTrue('favorite_color' in response['variables_needed_to_start']) - response = self.post(launch_url, dict(extra_vars=dict(favorite_color="green")), expect=202) + response = self.post(launch_url, dict(extra_vars=dict(favorite_color="green")), expect=201) job = Job.objects.get(pk=response["job"]) job_extra = json.loads(job.extra_vars) self.assertTrue("favorite_color" in job_extra) @@ -1187,7 +1187,7 @@ class JobTemplateSurveyTest(BaseJobTestMixin, django.test.TransactionTestCase): with self.current_user(self.user_sue): response = self.post(url, json.loads(TEST_SURVEY_REQUIREMENTS), expect=200) # Just the required answer should work - self.post(launch_url, dict(extra_vars=dict(reqd_answer="foo")), expect=202) + self.post(launch_url, dict(extra_vars=dict(reqd_answer="foo")), expect=201) # Short answer but requires a long answer self.post(launch_url, dict(extra_vars=dict(long_answer='a', reqd_answer="foo")), expect=400) # Long answer but requires a short answer @@ -1199,9 +1199,9 @@ class JobTemplateSurveyTest(BaseJobTestMixin, django.test.TransactionTestCase): # Integer that's too big self.post(launch_url, dict(extra_vars=dict(int_answer=10, reqd_answer="foo")), expect=400) # Integer that's just riiiiight - self.post(launch_url, dict(extra_vars=dict(int_answer=3, reqd_answer="foo")), expect=202) + self.post(launch_url, dict(extra_vars=dict(int_answer=3, reqd_answer="foo")), expect=201) # Integer bigger than min with no max defined - self.post(launch_url, dict(extra_vars=dict(int_answer_no_max=3, reqd_answer="foo")), expect=202) + self.post(launch_url, dict(extra_vars=dict(int_answer_no_max=3, reqd_answer="foo")), expect=201) # Integer answer that's the wrong type self.post(launch_url, dict(extra_vars=dict(int_answer="test", reqd_answer="foo")), expect=400) # Float that's too big @@ -1209,7 +1209,7 @@ class JobTemplateSurveyTest(BaseJobTestMixin, django.test.TransactionTestCase): # Float that's too small self.post(launch_url, dict(extra_vars=dict(float_answer=1.995, reqd_answer="foo")), expect=400) # float that's just riiiiight - self.post(launch_url, dict(extra_vars=dict(float_answer=2.01, reqd_answer="foo")), expect=202) + self.post(launch_url, dict(extra_vars=dict(float_answer=2.01, reqd_answer="foo")), expect=201) # float answer that's the wrong type self.post(launch_url, dict(extra_vars=dict(float_answer="test", reqd_answer="foo")), expect=400) # Wrong choice in single choice @@ -1219,11 +1219,11 @@ class JobTemplateSurveyTest(BaseJobTestMixin, django.test.TransactionTestCase): # Wrong type for multi choicen self.post(launch_url, dict(extra_vars=dict(reqd_answer="foo", multi_choice="two")), expect=400) # Right choice in single choice - self.post(launch_url, dict(extra_vars=dict(reqd_answer="foo", single_choice="two")), expect=202) + self.post(launch_url, dict(extra_vars=dict(reqd_answer="foo", single_choice="two")), expect=201) # Right choices in multi choice - self.post(launch_url, dict(extra_vars=dict(reqd_answer="foo", multi_choice=["one", "two"])), expect=202) + self.post(launch_url, dict(extra_vars=dict(reqd_answer="foo", multi_choice=["one", "two"])), expect=201) # Nested json - self.post(launch_url, dict(extra_vars=dict(json_answer=dict(test="val", num=1), reqd_answer="foo")), expect=202) + self.post(launch_url, dict(extra_vars=dict(json_answer=dict(test="val", num=1), reqd_answer="foo")), expect=201) # Bob can access and update the survey because he's an org-admin with self.current_user(self.user_bob):