Create GraphQL mutation for DAST on-demand scans
What does this MR do?
this merge request adds the ability to schedule dast scans on-demand by:
- adding a service to capture recipe required to run a scan on-demand
- adding a new graphql mutation protected by a feature flag
- adding a new graphql enum type
- adding tests at the mutation, service and graphql level
conscious that this merge request is already pretty large i've opted to complete the following functionality into separate merge requests:
- provide validation errors to the frontend and possibly ditch the custom exceptions
- add new policy for this feature
Related Issues
How to test this?
- enable the
security_on_demand_scans
feature flag:
echo "Feature.enable(:security_on_demand_scans_feature_flag)" | rails c
- login
- navigate to graphiql e.g. http://gitlab.localdev:3000/-/graphql-explorer
- run the following mutation replacing the placeholder values
mutation {
runDastScan(input: {projectPath: "placeholder", branch: "master", targetUrl: "placeholder", scanType: PASSIVE}) {
pipelineUrl
}
}
- navigate to the
pipelineUrl
that gets returned
Screenshots
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry -
Documentation (if required) -
Code review guidelines -
Merge request performance guidelines -
Style guides -
Database guides -
Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Edited by Philip Cunningham