Merge ~cjwatson/launchpad:delete-related-access-tokens into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 10aa5d470fb634cc02d14d69141ac2dccc3bda8b
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:delete-related-access-tokens
Merge into: launchpad:master
Diff against target: 36 lines (+14/-0)
2 files modified
lib/lp/code/model/gitrepository.py (+1/-0)
lib/lp/code/model/tests/test_gitrepository.py (+13/-0)
Reviewer Review Type Date Requested Status
Jürgen Gmach Approve
Review via email: mp+416820@code.launchpad.net

Commit message

Delete related access tokens when deleting a Git repository

To post a comment you must log in.
Revision history for this message
Jürgen Gmach (jugmac00) :
review: Approve
Revision history for this message
Colin Watson (cjwatson) :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/lib/lp/code/model/gitrepository.py b/lib/lp/code/model/gitrepository.py
index 0dd205b..c52fd5e 100644
--- a/lib/lp/code/model/gitrepository.py
+++ b/lib/lp/code/model/gitrepository.py
@@ -1821,6 +1821,7 @@ class GitRepository(StormBase, WebhookTargetMixin, AccessTokenTargetMixin,
1821 # activity logs for removed repositories anyway.1821 # activity logs for removed repositories anyway.
1822 self.grants.remove()1822 self.grants.remove()
1823 self.rules.remove()1823 self.rules.remove()
1824 removeSecurityProxy(self.getAccessTokens()).remove()
1824 getUtility(IRevisionStatusReportSet).deleteForRepository(self)1825 getUtility(IRevisionStatusReportSet).deleteForRepository(self)
1825 getUtility(ICIBuildSet).deleteByGitRepository(self)1826 getUtility(ICIBuildSet).deleteByGitRepository(self)
18261827
diff --git a/lib/lp/code/model/tests/test_gitrepository.py b/lib/lp/code/model/tests/test_gitrepository.py
index fd1f9eb..10742af 100644
--- a/lib/lp/code/model/tests/test_gitrepository.py
+++ b/lib/lp/code/model/tests/test_gitrepository.py
@@ -1184,6 +1184,19 @@ class TestGitRepositoryDeletion(TestCaseWithFactory):
1184 GitActivity, GitActivity.repository_id == repository_id)1184 GitActivity, GitActivity.repository_id == repository_id)
1185 self.assertEqual([], list(activities))1185 self.assertEqual([], list(activities))
11861186
1187 def test_related_access_tokens_deleted(self):
1188 _, token = self.factory.makeAccessToken(target=self.repository)
1189 other_repository = self.factory.makeGitRepository()
1190 _, other_token = self.factory.makeAccessToken(target=other_repository)
1191 self.repository.destroySelf()
1192 transaction.commit()
1193 # The deleted repository's access tokens are gone.
1194 self.assertRaises(
1195 LostObjectError, getattr, removeSecurityProxy(token), 'target')
1196 # An unrelated repository's access tokens are still present.
1197 self.assertEqual(
1198 other_repository, removeSecurityProxy(other_token).target)
1199
1187 def test_related_ci_builds_deleted(self):1200 def test_related_ci_builds_deleted(self):
1188 # A repository that has a CI build can be deleted.1201 # A repository that has a CI build can be deleted.
1189 build = self.factory.makeCIBuild(git_repository=self.repository)1202 build = self.factory.makeCIBuild(git_repository=self.repository)

Subscribers

People subscribed via source and target branches

to status/vote changes: