diff --git a/ara/api/filters.py b/ara/api/filters.py index 07ec27ae..fd1a5ca3 100644 --- a/ara/api/filters.py +++ b/ara/api/filters.py @@ -83,6 +83,7 @@ class PlayFilter(DateFilter): status = django_filters.MultipleChoiceFilter( field_name="status", choices=ara_models.Play.STATUS, lookup_expr="iexact" ) + name = django_filters.CharFilter(field_name="name", lookup_expr="icontains") # fmt: off order = django_filters.OrderingFilter( diff --git a/ara/api/tests/tests_play.py b/ara/api/tests/tests_play.py index 6a3dc650..ed30dc23 100644 --- a/ara/api/tests/tests_play.py +++ b/ara/api/tests/tests_play.py @@ -98,6 +98,17 @@ class PlayTestCase(APITestCase): self.assertEqual(1, len(request.data["results"])) self.assertEqual(play.name, request.data["results"][0]["name"]) + def test_get_plays_by_name(self): + # Create a playbook and two plays + playbook = factories.PlaybookFactory() + play = factories.PlayFactory(name="first_play", playbook=playbook) + factories.TaskFactory(name="second_play", playbook=playbook) + + # Query for the first play name and expect one result + request = self.client.get("/api/v1/plays?name=%s" % play.name) + self.assertEqual(1, len(request.data["results"])) + self.assertEqual(play.name, request.data["results"][0]["name"]) + def test_get_play_by_uuid(self): play = factories.PlayFactory(name="play1", uuid="6b838b6f-cfc7-4e11-a264-73df8683ee0e") factories.PlayFactory(name="play2")