Clean up DAST site tokens when site deleted
What does this MR do and why?
this merge request ensures that dast_site_tokens
and dast_site_validations
are removed when dast_sites
are deleted. this is necessary to avoid leaving orphaned dast_site_validations
.
Related Issue(s)
Failed DAST site validations remain after deleting site profiles
Screenshots
How to set up and validate locally
-
start a rails console.
-
create some records.
dast_site = DastSite.create!(project: Project.last, url: 'https://example.com')
dast_site_token = DastSiteToken.create!(project: Project.last, url: dast_site.url, token: SecureRandom.uuid)
100.times { DastSiteValidation.create!(dast_site_token: dast_site_token, validation_strategy: :text_file, url_path: '/some_path') }
- delete the the record and check the counts.
DastSiteValidation.count
DastSiteToken.count
dast_site.destroy!
# TRANSACTION (0.2ms) BEGIN /*application:console,db_config_name:main,line:/lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `block in write_using_load_balancer'*/
# DastSite Destroy (1.1ms) DELETE FROM "dast_sites" WHERE "dast_sites"."id" = 32 /*application:console,db_config_name:main,line:/lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `block in write_using_load_balancer'*/
# DastSiteToken Destroy (2.2ms) DELETE FROM "dast_site_tokens" WHERE "dast_site_tokens"."project_id" = 21 AND "dast_site_tokens"."url" = 'https://example.com' /*application:console,db_config_name:main,line:/lib/gitlab/database/load_balancing/connection_proxy.rb:119:in `block in write_using_load_balancer'*/
# TRANSACTION (0.7ms) COMMIT /*application:console,db_config_name:main,line:/lib/gitlab/database.rb:287:in `commit'*/
DastSiteValidation.count
DastSiteToken.count
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Philip Cunningham