Skip to content

Commit

Permalink
Refine API support for webhooks #1325
Browse files Browse the repository at this point in the history
Signed-off-by: tdruez <[email protected]>
  • Loading branch information
tdruez committed Jul 24, 2024
1 parent 7204469 commit 4d3aadb
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
1 change: 1 addition & 0 deletions scanpipe/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ class ProjectSerializer(
execute_now = serializers.BooleanField(
write_only=True,
help_text="Execute pipeline now",
required=False,
)
upload_file = serializers.FileField(write_only=True, required=False)
upload_file_tag = serializers.CharField(write_only=True, required=False)
Expand Down
43 changes: 43 additions & 0 deletions scanpipe/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
from scanpipe.api.serializers import DiscoveredDependencySerializer
from scanpipe.api.serializers import DiscoveredPackageSerializer
from scanpipe.api.serializers import ProjectMessageSerializer
from scanpipe.api.serializers import ProjectSerializer
from scanpipe.api.serializers import get_model_serializer
from scanpipe.api.serializers import get_serializer_fields
from scanpipe.models import CodebaseRelation
Expand Down Expand Up @@ -494,6 +495,48 @@ def test_scanpipe_api_project_create_labels(self):
project = Project.objects.get(name=data["name"])
self.assertEqual(data["labels"], sorted(project.labels.names()))

def test_scanpipe_api_project_create_webhooks(self):
data = {
"name": "Project1",
"webhooks": [
{
"target_url": "https://1.com",
"trigger_on_each_run": False,
"include_summary": False,
"include_results": False,
"is_active": False,
},
{
"target_url": "https://2.com",
"trigger_on_each_run": True,
"include_summary": True,
"include_results": True,
"is_active": True,
},
],
}

serializer = ProjectSerializer(data=data)
self.assertTrue(serializer.is_valid(), msg=serializer.errors)

response = self.csrf_client.post(self.project_list_url, data, format="json")
self.assertEqual(status.HTTP_201_CREATED, response.status_code)

project = Project.objects.get(name=data["name"])
# Ordered by -created_date by default
webhook_subscriptions = project.webhooksubscriptions.all()
self.assertEqual("https://2.com", webhook_subscriptions[0].target_url)
self.assertTrue(webhook_subscriptions[0].trigger_on_each_run)
self.assertTrue(webhook_subscriptions[0].include_summary)
self.assertTrue(webhook_subscriptions[0].include_results)
self.assertTrue(webhook_subscriptions[0].is_active)

self.assertEqual("https://1.com", webhook_subscriptions[1].target_url)
self.assertFalse(webhook_subscriptions[1].trigger_on_each_run)
self.assertFalse(webhook_subscriptions[1].include_summary)
self.assertFalse(webhook_subscriptions[1].include_results)
self.assertFalse(webhook_subscriptions[1].is_active)

def test_scanpipe_api_project_results_generator(self):
results_generator = JSONResultsGenerator(self.project1)
results = json.loads("".join(results_generator))
Expand Down

0 comments on commit 4d3aadb

Please sign in to comment.