From 6dda8e58ad31b489f90efedfb2f0062f38e21649 Mon Sep 17 00:00:00 2001 From: Chris Church Date: Thu, 16 Apr 2015 14:31:23 -0400 Subject: [PATCH] Don't return ids for deleted credential/inventory for ad hoc commands. Fixes https://trello.com/c/ps2bW38Q --- awx/api/serializers.py | 4 ++++ awx/main/tests/ad_hoc.py | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 6c155fcf4f..25317c33de 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -1543,6 +1543,10 @@ class AdHocCommandSerializer(UnifiedJobSerializer): if parent_model in (Host, Group): ret.pop('inventory', None) ret.pop('limit', None) + if 'inventory' in ret and (not obj.inventory or not obj.inventory.active): + ret['inventory'] = None + if 'credential' in ret and (not obj.credential or not obj.credential.active): + ret['credential'] = None return ret diff --git a/awx/main/tests/ad_hoc.py b/awx/main/tests/ad_hoc.py index ad1231501f..ffcbec085a 100644 --- a/awx/main/tests/ad_hoc.py +++ b/awx/main/tests/ad_hoc.py @@ -567,8 +567,10 @@ class AdHocCommandApiTest(BaseAdHocCommandTest): self.assertEqual(url, response['url']) with self.current_user('admin'): response = self.get(url, expect=200) + self.assertEqual(response['credential'], self.credential.pk) self.assertEqual(response['related']['credential'], reverse('api:credential_detail', args=(self.credential.pk,))) + self.assertEqual(response['inventory'], self.inventory.pk) self.assertEqual(response['related']['inventory'], reverse('api:inventory_detail', args=(self.inventory.pk,))) self.assertTrue(response['related']['stdout']) @@ -600,6 +602,15 @@ class AdHocCommandApiTest(BaseAdHocCommandTest): self.patch(url, {}, expect=401) self.delete(url, expect=401) + # Verify that the credential and inventory are null when they have + # been deleted. + self.credential.mark_inactive() + self.inventory.mark_inactive() + with self.current_user('admin'): + response = self.get(url, expect=200) + self.assertEqual(response['credential'], None) + self.assertEqual(response['inventory'], None) + def test_ad_hoc_command_cancel(self): # Override setting so that ad hoc command isn't actually started. with self.settings(CELERY_UNIT_TEST=False):