コード例 #1
0
    def test_codeowner_links(self):
        org = self.create_organization()
        project = self.create_project(organization=org)
        integration = Integration.objects.create(provider="example",
                                                 name="Example")
        repository = self.create_repo(project=project,
                                      name="testrepo",
                                      provider="gitlab",
                                      integration_id=integration.id)
        organization_integration = integration.add_organization(org, self.user)

        code_mapping = self.create_code_mapping(
            project=project,
            repo=repository,
            organization_integration=organization_integration)
        code_owner = self.create_codeowners(project=project,
                                            code_mapping=code_mapping)

        organization_integration.update(status=ObjectStatus.PENDING_DELETION)
        deletion = ScheduledDeletion.schedule(organization_integration, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not OrganizationIntegration.objects.filter(
            id=organization_integration.id).exists()
        # We expect to delete all associated Code Owners and Code Mappings
        assert not ProjectCodeOwners.objects.filter(id=code_owner.id).exists()
        assert not RepositoryProjectPathConfig.objects.filter(
            id=code_owner.id).exists()
コード例 #2
0
    def test_simple(self):
        org = self.create_organization()
        repo = Repository.objects.create(
            organization_id=org.id,
            provider='dummy',
            name='example/example',
        )
        repo2 = Repository.objects.create(
            organization_id=org.id,
            provider='dummy',
            name='example/example2',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=org.id,
            key='1234abcd',
        )
        commit2 = Commit.objects.create(
            repository_id=repo2.id,
            organization_id=org.id,
            key='1234abcd',
        )

        deletion = ScheduledDeletion.schedule(repo, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Repository.objects.filter(id=repo.id).exists()
        assert not Commit.objects.filter(id=commit.id).exists()
        assert Commit.objects.filter(id=commit2.id).exists()
コード例 #3
0
    def test_simple(self):
        org = self.create_organization()
        integration = Integration.objects.create(
            provider='example',
            name='Example',
        )
        integration.add_organization(org, self.user)
        organization_integration = OrganizationIntegration.objects.get(
            integration_id=integration.id,
            organization_id=org.id,
        )
        external_issue = ExternalIssue.objects.create(
            organization_id=org.id,
            integration_id=integration.id,
            key='ABC-123',
        )

        deletion = ScheduledDeletion.schedule(organization_integration, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not OrganizationIntegration.objects.filter(
            id=organization_integration.id).exists()
        assert not ExternalIssue.objects.filter(id=external_issue.id).exists()
コード例 #4
0
    def test_simple(self):
        app = ApiApplication.objects.create(
            owner=self.user,
        )
        ApiToken.objects.create(
            application=app,
            user=self.user,
            scopes=0,
        )
        ApiGrant.objects.create(
            application=app,
            user=self.user,
            scopes=0,
            redirect_uri='http://example.com',
        )

        deletion = ScheduledDeletion.schedule(app, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not ApiApplication.objects.filter(id=app.id).exists()
        assert not ApiGrant.objects.filter(application=app).exists()
        assert not ApiToken.objects.filter(application=app).exists()
コード例 #5
0
    def test_simple(self):
        org = self.create_organization()
        repo = Repository.objects.create(
            organization_id=org.id,
            provider='dummy',
            name='example/example',
        )
        repo2 = Repository.objects.create(
            organization_id=org.id,
            provider='dummy',
            name='example/example2',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=org.id,
            key='1234abcd',
        )
        commit2 = Commit.objects.create(
            repository_id=repo2.id,
            organization_id=org.id,
            key='1234abcd',
        )

        deletion = ScheduledDeletion.schedule(repo, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Repository.objects.filter(id=repo.id).exists()
        assert not Commit.objects.filter(id=commit.id).exists()
        assert Commit.objects.filter(id=commit2.id).exists()
コード例 #6
0
    def test_orphan_commits(self):
        # We have had a few orgs get into a state where they have commits
        # but no repositories. Ensure that we can proceed.
        org = self.create_organization(name="test")

        repo = Repository.objects.create(organization_id=org.id,
                                         name=org.name,
                                         provider="dummy")
        author = CommitAuthor.objects.create(organization_id=org.id,
                                             name="foo",
                                             email="*****@*****.**")
        commit = Commit.objects.create(repository_id=repo.id,
                                       organization_id=org.id,
                                       author=author,
                                       key="a" * 40)

        # Simulate the project being deleted but the deletion crashing.
        repo.delete()

        org.update(status=OrganizationStatus.PENDING_DELETION)
        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Organization.objects.filter(id=org.id).exists()
        assert not Commit.objects.filter(id=commit.id).exists()
        assert not CommitAuthor.objects.filter(id=author.id).exists()
コード例 #7
0
    def test_simple(self):
        event_id = "a" * 32
        project = self.create_project()
        node_id = Event.generate_node_id(project.id, event_id)
        group = self.create_group(project=project)
        event = self.create_event(group=group, event_id=event_id)
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(name="hello.png", type="image/png"),
            name="hello.png",
        )
        UserReport.objects.create(
            event_id=event.event_id, project_id=event.project_id, name="Jane Bloggs"
        )
        assert nodestore.get(node_id) is not None
        deletion = ScheduledDeletion.schedule(event, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id, project_id=project.id
        ).exists()
        assert not UserReport.objects.filter(
            event_id=event.event_id, project_id=project.id
        ).exists()

        assert nodestore.get(node_id) is None
コード例 #8
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(project=project, )
        event = self.create_event(group=group)

        UserReport.objects.create(
            group_id=group.id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(project_id=project.id,
                                     environment_id=self.environment.id,
                                     key=key)
        tv = tagstore.create_tag_value(project_id=project.id,
                                       environment_id=self.environment.id,
                                       key=key,
                                       value=value)
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not UserReport.objects.filter(group_id=group.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
コード例 #9
0
    def test_simple(self):
        org = self.create_organization()
        repo = Repository.objects.create(
            organization_id=org.id,
            provider="dummy",
            name="example/example",
            status=ObjectStatus.PENDING_DELETION,
        )
        repo2 = Repository.objects.create(organization_id=org.id,
                                          provider="dummy",
                                          name="example/example2")
        commit = Commit.objects.create(repository_id=repo.id,
                                       organization_id=org.id,
                                       key="1234abcd")
        commit2 = Commit.objects.create(repository_id=repo2.id,
                                        organization_id=org.id,
                                        key="1234abcd")

        deletion = ScheduledDeletion.schedule(repo, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Repository.objects.filter(id=repo.id).exists()
        assert not Commit.objects.filter(id=commit.id).exists()
        assert Commit.objects.filter(id=commit2.id).exists()
コード例 #10
0
    def test_alert_rule(self):
        org = self.create_organization(name="test", owner=self.user)
        self.create_team(organization=org, name="test1")

        env = Environment.objects.create(organization_id=org.id, name="foo")
        snuba_query = SnubaQuery.objects.create(dataset="events",
                                                aggregate="count()",
                                                time_window=60,
                                                resolution=60,
                                                environment=env)
        alert_rule = AlertRule.objects.create(
            organization=org,
            name="rule with environment",
            threshold_period=1,
            snuba_query=snuba_query,
            # This status is hidden from the default finder.
            status=AlertRuleStatus.SNAPSHOT.value,
        )

        org.update(status=OrganizationStatus.PENDING_DELETION)
        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Organization.objects.filter(id=org.id).exists()
        assert not Environment.objects.filter(id=env.id).exists()
        assert not AlertRule.objects.filter(id=alert_rule.id).exists()
        assert not SnubaQuery.objects.filter(id=snuba_query.id).exists()
コード例 #11
0
    def test_discover_query_cleanup(self):
        org = self.create_organization(name="test", owner=self.user)
        self.create_team(organization=org, name="test1")

        other = self.create_organization(name="other", owner=self.user)
        other_project = self.create_project(organization=other,
                                            name="other project")

        query = DiscoverSavedQuery.objects.create(organization=org,
                                                  name="test query",
                                                  query="{}")
        # Make a cross-org project reference. This can happen when an account was
        # merged in the past and we didn't update the discover queries.
        query_project = DiscoverSavedQueryProject.objects.create(
            discover_saved_query=query, project=other_project)

        org.update(status=OrganizationStatus.PENDING_DELETION)
        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Organization.objects.filter(id=org.id).exists()
        assert not DiscoverSavedQuery.objects.filter(id=query.id).exists()
        assert not DiscoverSavedQueryProject.objects.filter(
            id=query_project.id).exists()
コード例 #12
0
    def test_simple(self):
        org = self.create_organization()
        integration = Integration.objects.create(
            provider='example',
            name='Example',
        )
        integration.add_organization(org, self.user)
        organization_integration = OrganizationIntegration.objects.get(
            integration_id=integration.id,
            organization_id=org.id,
        )
        external_issue = ExternalIssue.objects.create(
            organization_id=org.id,
            integration_id=integration.id,
            key='ABC-123',
        )

        deletion = ScheduledDeletion.schedule(organization_integration, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not OrganizationIntegration.objects.filter(id=organization_integration.id).exists()
        assert not ExternalIssue.objects.filter(id=external_issue.id).exists()
コード例 #13
0
    def test_large_child_relation_deletion(self):
        org = self.create_organization(name="test")
        self.create_team(organization=org, name="test1")
        repo = Repository.objects.create(organization_id=org.id,
                                         name=org.name,
                                         provider="dummy")
        author_bob = CommitAuthor.objects.create(organization_id=org.id,
                                                 name="bob",
                                                 email="*****@*****.**")
        author_sally = CommitAuthor.objects.create(organization_id=org.id,
                                                   name="sally",
                                                   email="*****@*****.**")
        # Make >100 commits so we can ensure that all commits are removed before authors are.
        for i in range(0, 150):
            author = author_bob if i % 2 == 0 else author_sally
            Commit.objects.create(repository_id=repo.id,
                                  organization_id=org.id,
                                  author=author,
                                  key=uuid4().hex)

        org.update(status=OrganizationStatus.PENDING_DELETION)
        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Organization.objects.filter(id=org.id).exists()
        assert not Commit.objects.filter(organization_id=org.id).exists()
        assert not CommitAuthor.objects.filter(organization_id=org.id).exists()
コード例 #14
0
ファイル: test_organization.py プロジェクト: zanjs/sentry
    def test_simple(self):
        org = self.create_organization(
            name='test',
        )
        org2 = self.create_organization(name='test2')
        self.create_team(organization=org, name='test1')
        self.create_team(organization=org, name='test2')
        release = Release.objects.create(version='a' * 32,
                                         organization_id=org.id)
        repo = Repository.objects.create(
            organization_id=org.id,
            name=org.name,
        )
        commit_author = CommitAuthor.objects.create(
            organization_id=org.id,
            name='foo',
            email='*****@*****.**',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=org.id,
            author=commit_author,
            key='a' * 40,
        )
        ReleaseCommit.objects.create(
            organization_id=org.id,
            release=release,
            commit=commit,
            order=0,
        )

        env = Environment.objects.create(
            organization_id=org.id,
            project_id=4,
            name='foo'
        )
        release_env = ReleaseEnvironment.objects.create(
            organization_id=org.id,
            project_id=4,
            release_id=release.id,
            environment_id=env.id
        )

        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert Organization.objects.filter(id=org2.id).exists()

        assert not Organization.objects.filter(id=org.id).exists()
        assert not Environment.objects.filter(id=env.id).exists()
        assert not ReleaseEnvironment.objects.filter(id=release_env.id).exists()
        assert not Repository.objects.filter(id=repo.id).exists()
        assert not ReleaseCommit.objects.filter(organization_id=org.id).exists()
        assert not Release.objects.filter(organization_id=org.id).exists()
        assert not CommitAuthor.objects.filter(id=commit_author.id).exists()
        assert not Commit.objects.filter(id=commit.id).exists()
コード例 #15
0
ファイル: test_tagkey.py プロジェクト: wqc080/sentry
    def test_simple(self):
        team = self.create_team(name='test', slug='test')
        project = self.create_project(team=team, name='test1', slug='test1')
        group = self.create_group(project=project)
        tk = TagKey.objects.create(key='foo', project_id=project.id)
        TagValue.objects.create(key='foo', value='bar', project_id=project.id)
        GroupTagKey.objects.create(key='foo',
                                   group_id=group.id,
                                   project_id=project.id)
        GroupTagValue.objects.create(key='foo',
                                     value='bar',
                                     group_id=group.id,
                                     project_id=project.id)
        EventTag.objects.create(
            key_id=tk.id,
            group_id=group.id,
            value_id=1,
            project_id=project.id,
            event_id=1,
        )

        project2 = self.create_project(team=team, name='test2')
        group2 = self.create_group(project=project2)
        tk2 = TagKey.objects.create(key='foo', project_id=project2.id)
        gtk2 = GroupTagKey.objects.create(key='foo',
                                          group_id=group2.id,
                                          project_id=project2.id)
        gtv2 = GroupTagValue.objects.create(key='foo',
                                            value='bar',
                                            group_id=group2.id,
                                            project_id=project2.id)
        EventTag.objects.create(
            key_id=tk2.id,
            group_id=group2.id,
            value_id=1,
            project_id=project.id,
            event_id=1,
        )

        deletion = ScheduledDeletion.schedule(tk, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not GroupTagValue.objects.filter(
            key=tk.key, project_id=project.id).exists()
        assert not GroupTagKey.objects.filter(key=tk.key,
                                              project_id=project.id).exists()
        assert not TagValue.objects.filter(key=tk.key,
                                           project_id=project.id).exists()
        assert not TagKey.objects.filter(id=tk.id).exists()
        assert not EventTag.objects.filter(key_id=tk.id).exists()

        assert TagKey.objects.filter(id=tk2.id).exists()
        assert GroupTagKey.objects.filter(id=gtk2.id).exists()
        assert GroupTagValue.objects.filter(id=gtv2.id).exists()
        assert EventTag.objects.filter(key_id=tk2.id).exists()
コード例 #16
0
ファイル: test_project.py プロジェクト: duanshuaimin/sentry
    def test_simple(self):
        project = self.create_project(
            name='test',
        )
        group = self.create_group(project=project)
        GroupAssignee.objects.create(group=group, project=project, user=self.user)
        GroupMeta.objects.create(group=group, key='foo', value='bar')
        release = Release.objects.create(version='a' * 32,
                                         organization_id=project.organization_id)
        release.add_project(project)
        GroupResolution.objects.create(group=group, release=release)
        env = Environment.objects.create(
            organization_id=project.organization_id,
            project_id=project.id,
            name='foo'
        )
        env.add_project(project)
        repo = Repository.objects.create(
            organization_id=project.organization_id,
            name=project.name,
        )
        commit_author = CommitAuthor.objects.create(
            organization_id=project.organization_id,
            name='foo',
            email='*****@*****.**',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=project.organization_id,
            author=commit_author,
            key='a' * 40,
        )
        ReleaseCommit.objects.create(
            organization_id=project.organization_id,
            project_id=project.id,
            release=release,
            commit=commit,
            order=0,
        )

        deletion = ScheduledDeletion.schedule(project, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Project.objects.filter(id=project.id).exists()
        assert not EnvironmentProject.objects.filter(
            project_id=project.id,
            environment_id=env.id
        ).exists()
        assert Environment.objects.filter(id=env.id).exists()
        assert Release.objects.filter(id=release.id).exists()
        assert ReleaseCommit.objects.filter(release_id=release.id).exists()
        assert Commit.objects.filter(id=commit.id).exists()
コード例 #17
0
ファイル: test_group.py プロジェクト: www3838438/sentry
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (1, 1),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventMapping.objects.filter(
            event_id='a' * 32,
            group_id=group.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
コード例 #18
0
    def test_no_delete_visible(self):
        org = self.create_organization()
        repo = Repository.objects.create(organization_id=org.id,
                                         provider="dummy",
                                         name="example/example")
        deletion = ScheduledDeletion.schedule(repo, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)
        assert Repository.objects.filter(id=repo.id).exists()
コード例 #19
0
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            tags=[
                (1, 1),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventMapping.objects.filter(
            event_id='a' * 32,
            group_id=group.id,
        ).exists()
        assert not tagstore.get_event_tag_qs(event_id=event.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
コード例 #20
0
    def test_simple(self):
        team = self.create_team(name='test', )
        self.create_project(team=team, name='test1')
        self.create_project(team=team, name='test2')

        deletion = ScheduledDeletion.schedule(team, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Team.objects.filter(id=team.id).exists()
コード例 #21
0
ファイル: test_event.py プロジェクト: webZW/sentry
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(project=project, )
        event = self.create_event(group=group)
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(
                name='hello.png',
                type='image/png',
            ),
            name='hello.png',
        )
        UserReport.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(project_id=project.id,
                                     environment_id=self.environment.id,
                                     key=key)
        tv = tagstore.create_tag_value(project_id=project.id,
                                       environment_id=self.environment.id,
                                       key=key,
                                       value=value)
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )

        deletion = ScheduledDeletion.schedule(event, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not UserReport.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
コード例 #22
0
ファイル: test_organization.py プロジェクト: alshopov/sentry
    def test_simple(self):
        org = self.create_organization(
            name='test',
        )
        org2 = self.create_organization(name='test2')
        self.create_team(organization=org, name='test1')
        self.create_team(organization=org, name='test2')
        release = Release.objects.create(version='a' * 32, organization_id=org.id)
        repo = Repository.objects.create(
            organization_id=org.id,
            name=org.name,
            provider='dummy',
        )
        commit_author = CommitAuthor.objects.create(
            organization_id=org.id,
            name='foo',
            email='*****@*****.**',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=org.id,
            author=commit_author,
            key='a' * 40,
        )
        ReleaseCommit.objects.create(
            organization_id=org.id,
            release=release,
            commit=commit,
            order=0,
        )

        env = Environment.objects.create(organization_id=org.id, project_id=4, name='foo')
        release_env = ReleaseEnvironment.objects.create(
            organization_id=org.id, project_id=4, release_id=release.id, environment_id=env.id
        )

        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert Organization.objects.filter(id=org2.id).exists()

        assert not Organization.objects.filter(id=org.id).exists()
        assert not Environment.objects.filter(id=env.id).exists()
        assert not ReleaseEnvironment.objects.filter(id=release_env.id).exists()
        assert not Repository.objects.filter(id=repo.id).exists()
        assert not ReleaseCommit.objects.filter(organization_id=org.id).exists()
        assert not Release.objects.filter(organization_id=org.id).exists()
        assert not CommitAuthor.objects.filter(id=commit_author.id).exists()
        assert not Commit.objects.filter(id=commit.id).exists()
コード例 #23
0
ファイル: test_project.py プロジェクト: zanjs/sentry
    def test_simple(self):
        project = self.create_project(name='test', )
        group = self.create_group(project=project)
        GroupAssignee.objects.create(group=group,
                                     project=project,
                                     user=self.user)
        GroupMeta.objects.create(group=group, key='foo', value='bar')
        release = Release.objects.create(
            version='a' * 32, organization_id=project.organization_id)
        release.add_project(project)
        GroupResolution.objects.create(group=group, release=release)
        env = Environment.objects.create(
            organization_id=project.organization_id,
            project_id=project.id,
            name='foo')
        env.add_project(project)
        repo = Repository.objects.create(
            organization_id=project.organization_id,
            name=project.name,
        )
        commit_author = CommitAuthor.objects.create(
            organization_id=project.organization_id,
            name='foo',
            email='*****@*****.**',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=project.organization_id,
            author=commit_author,
            key='a' * 40,
        )
        ReleaseCommit.objects.create(
            organization_id=project.organization_id,
            project_id=project.id,
            release=release,
            commit=commit,
            order=0,
        )

        deletion = ScheduledDeletion.schedule(project, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Project.objects.filter(id=project.id).exists()
        assert not EnvironmentProject.objects.filter(
            project_id=project.id, environment_id=env.id).exists()
        assert Environment.objects.filter(id=env.id).exists()
        assert Release.objects.filter(id=release.id).exists()
        assert ReleaseCommit.objects.filter(release_id=release.id).exists()
        assert Commit.objects.filter(id=commit.id).exists()
コード例 #24
0
    def test_no_delete_visible(self):
        org = self.create_organization(name="test")
        release = Release.objects.create(version="a" * 32, organization_id=org.id)

        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)
        assert org.status == OrganizationStatus.ACTIVE

        with self.tasks():
            run_deletion(deletion.id)

        assert Organization.objects.filter(id=org.id).exists()
        assert Release.objects.filter(id=release.id).exists()
        assert not ScheduledDeletion.objects.filter(id=deletion.id).exists()
コード例 #25
0
    def test_skip_on_undelete(self):
        org = self.create_organization()
        integration = Integration.objects.create(provider="example",
                                                 name="Example")
        organization_integration = integration.add_organization(org, self.user)

        deletion = ScheduledDeletion.schedule(organization_integration, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert OrganizationIntegration.objects.filter(
            id=organization_integration.id).exists()
コード例 #26
0
    def test_simple(self):
        app = ApiApplication.objects.create(owner=self.user)
        ApiToken.objects.create(application=app, user=self.user, scopes=0)
        ApiGrant.objects.create(
            application=app, user=self.user, scopes=0, redirect_uri="http://example.com"
        )

        deletion = ScheduledDeletion.schedule(app, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not ApiApplication.objects.filter(id=app.id).exists()
        assert not ApiGrant.objects.filter(application=app).exists()
        assert not ApiToken.objects.filter(application=app).exists()
コード例 #27
0
ファイル: test_group.py プロジェクト: zhangdinet/sentry
    def test_simple(self):
        key = "key"
        value = "value"

        event_id = "a" * 32
        project = self.create_project()
        event = self.store_event(
            data={
                "event_id": event_id,
                "tags": {
                    key: value
                },
                "timestamp": iso_format(before_now(minutes=1)),
            },
            project_id=project.id,
        )
        group = event.group
        group.update(status=GroupStatus.PENDING_DELETION)

        project = self.create_project()
        group = self.create_group(project=project)
        event = self.create_event(group=group)

        UserReport.objects.create(group_id=group.id,
                                  project_id=event.project_id,
                                  name="Jane Doe")

        GroupAssignee.objects.create(group=group,
                                     project=project,
                                     user=self.user)
        GroupHash.objects.create(project=project,
                                 group=group,
                                 hash=uuid4().hex)
        GroupMeta.objects.create(group=group, key="foo", value="bar")
        GroupRedirect.objects.create(group_id=group.id, previous_group_id=1)

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not UserReport.objects.filter(group_id=group.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
コード例 #28
0
ファイル: test_event.py プロジェクト: saurabhprasadsah/sentry
    def test_simple(self):
        event_id = "a" * 32
        project = self.create_project()
        node_id = Event.generate_node_id(project.id, event_id)
        group = self.create_group(project=project)
        event = self.create_event(group=group, event_id=event_id)
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(name="hello.png", type="image/png"),
            name="hello.png",
        )
        UserReport.objects.create(event_id=event.event_id,
                                  project_id=event.project_id,
                                  name="Jane Doe")
        key = "key"
        value = "value"
        tk = tagstore.create_tag_key(project_id=project.id,
                                     environment_id=self.environment.id,
                                     key=key)
        tv = tagstore.create_tag_value(project_id=project.id,
                                       environment_id=self.environment.id,
                                       key=key,
                                       value=value)
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[(tk.key, tv.value)],
        )
        assert nodestore.get(node_id) is not None
        deletion = ScheduledDeletion.schedule(event, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id, project_id=project.id).exists()
        assert not UserReport.objects.filter(event_id=event.event_id,
                                             project_id=project.id).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()

        assert nodestore.get(node_id) is None
コード例 #29
0
    def test_simple(self):
        team = self.create_team(name="test")
        project1 = self.create_project(teams=[team], name="test1")
        project2 = self.create_project(teams=[team], name="test2")
        assert project1.teams.first() == team
        assert project2.teams.first() == team

        deletion = ScheduledDeletion.schedule(team, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Team.objects.filter(id=team.id).exists()
        assert Project.objects.filter(id=project1.id).exists()
        assert Project.objects.filter(id=project2.id).exists()
        assert not ProjectTeam.objects.filter(team_id=team.id).exists()
コード例 #30
0
    def test_group_first_release(self):
        org = self.create_organization(name="test")
        project = self.create_project(organization=org)
        release = self.create_release(project=project, user=self.user, version="1.2.3")
        group = Group.objects.create(project=project, first_release=release)

        # Simulate the project being deleted but the deletion crashing.
        project.delete()

        org.update(status=OrganizationStatus.PENDING_DELETION)
        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Group.objects.filter(id=group.id).exists()
        assert not Organization.objects.filter(id=org.id).exists()
コード例 #31
0
ファイル: test_repository.py プロジェクト: liang0/sentry-1
    def test_delete_fail_email_random(self, mock_delete_repo):
        mock_delete_repo.side_effect = Exception("secrets")

        org = self.create_organization()
        repo = Repository.objects.create(organization_id=org.id,
                                         provider="dummy",
                                         name="example/example")

        deletion = ScheduledDeletion.schedule(repo, actor=self.user, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        msg = mail.outbox[-1]
        assert msg.subject == "Unable to Delete Repository Webhooks"
        assert msg.to == [self.user.email]
        assert "secrets" not in msg.body
        assert not Repository.objects.filter(id=repo.id).exists()
コード例 #32
0
ファイル: test_team.py プロジェクト: alshopov/sentry
    def test_simple(self):
        team = self.create_team(
            name='test',
        )
        project1 = self.create_project(team=team, name='test1')
        project2 = self.create_project(team=team, name='test2')
        assert project1.teams.first() == team
        assert project2.teams.first() == team

        deletion = ScheduledDeletion.schedule(team, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Team.objects.filter(id=team.id).exists()
        assert not Project.objects.filter(id=project1.id).exists()
        assert not Project.objects.filter(id=project2.id).exists()
        assert not ProjectTeam.objects.filter(team_id=team.id).exists()
コード例 #33
0
    def test_simple(self):
        org = self.create_organization()
        integration = Integration.objects.create(provider="example",
                                                 name="Example")
        organization_integration = integration.add_organization(org, self.user)
        external_issue = ExternalIssue.objects.create(
            organization_id=org.id,
            integration_id=integration.id,
            key="ABC-123")

        organization_integration.update(status=ObjectStatus.PENDING_DELETION)
        deletion = ScheduledDeletion.schedule(organization_integration, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not OrganizationIntegration.objects.filter(
            id=organization_integration.id).exists()
        assert not ExternalIssue.objects.filter(id=external_issue.id).exists()
コード例 #34
0
ファイル: test_release.py プロジェクト: waterdrops/sentry
    def test_simple(self):
        org = self.create_organization()
        project = self.create_project(organization=org)
        env = self.create_environment(organization=org)
        release = self.create_release(project=project, environments=[env])
        file = self.create_release_file(release_id=release.id)

        deletion = ScheduledDeletion.schedule(release, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Release.objects.filter(id=release.id).exists()
        assert not ReleaseCommit.objects.filter(release=release).exists()
        assert not ReleaseEnvironment.objects.filter(release=release).exists()
        assert not ReleaseFile.objects.filter(id=file.id).exists()

        # Shared objects should continue to exist.
        assert Environment.objects.filter(id=env.id).exists()
        assert Project.objects.filter(id=project.id).exists()
コード例 #35
0
    def test_botched_deletion(self):
        repo = Repository.objects.create(
            organization_id=self.organization.id,
            provider="dummy",
            name="example/example",
            status=ObjectStatus.PENDING_DELETION,
        )
        # Left over from a botched deletion.
        OrganizationOption.objects.create(
            organization_id=self.organization.id,
            key=repo.build_pending_deletion_key(),
            value="",
        )

        deletion = ScheduledDeletion.schedule(repo, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Repository.objects.filter(id=repo.id).exists()
コード例 #36
0
    def test_delete_fail_email(self, mock_delete_repo):
        mock_delete_repo.side_effect = PluginError('foo')

        org = self.create_organization()
        repo = Repository.objects.create(
            organization_id=org.id,
            provider='dummy',
            name='example/example',
        )

        deletion = ScheduledDeletion.schedule(repo, actor=self.user, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        msg = mail.outbox[-1]
        assert msg.subject == 'Unable to Delete Repository Webhooks'
        assert msg.to == [self.user.email]
        assert 'foo' in msg.body
        assert not Repository.objects.filter(id=repo.id).exists()
コード例 #37
0
    def test_delete_fail_email_random(self, mock_delete_repo):
        mock_delete_repo.side_effect = Exception('secrets')

        org = self.create_organization()
        repo = Repository.objects.create(
            organization_id=org.id,
            provider='dummy',
            name='example/example',
        )

        deletion = ScheduledDeletion.schedule(repo, actor=self.user, days=0)
        deletion.update(in_progress=True)

        with self.assertRaises(Exception):
            with self.tasks():
                run_deletion(deletion.id)

        msg = mail.outbox[-1]
        assert msg.subject == 'Unable to Delete Repository'
        assert msg.to == [self.user.email]
        assert 'secrets' not in msg.body
コード例 #38
0
ファイル: test_repository.py プロジェクト: alshopov/sentry
    def test_delete_fail_email_random(self, mock_delete_repo):
        mock_delete_repo.side_effect = Exception('secrets')

        org = self.create_organization()
        repo = Repository.objects.create(
            organization_id=org.id,
            provider='dummy',
            name='example/example',
        )

        deletion = ScheduledDeletion.schedule(repo, actor=self.user, days=0)
        deletion.update(in_progress=True)

        with self.assertRaises(Exception):
            with self.tasks():
                run_deletion(deletion.id)

        msg = mail.outbox[-1]
        assert msg.subject == 'Unable to Delete Repository'
        assert msg.to == [self.user.email]
        assert 'secrets' not in msg.body
コード例 #39
0
ファイル: test_tagkey.py プロジェクト: duanshuaimin/sentry
    def test_simple(self):
        team = self.create_team(name='test', slug='test')
        project = self.create_project(team=team, name='test1', slug='test1')
        group = self.create_group(project=project)
        tk = TagKey.objects.create(key='foo', project=project)
        TagValue.objects.create(key='foo', value='bar', project=project)
        GroupTagKey.objects.create(key='foo', group=group, project=project)
        GroupTagValue.objects.create(key='foo', value='bar', group_id=group.id, project_id=project.id)
        EventTag.objects.create(
            key_id=tk.id, group_id=group.id, value_id=1, project_id=project.id,
            event_id=1,
        )

        project2 = self.create_project(team=team, name='test2')
        group2 = self.create_group(project=project2)
        tk2 = TagKey.objects.create(key='foo', project=project2)
        gtk2 = GroupTagKey.objects.create(key='foo', group=group2, project=project2)
        gtv2 = GroupTagValue.objects.create(key='foo', value='bar', group_id=group2.id, project_id=project2.id)
        EventTag.objects.create(
            key_id=tk2.id, group_id=group2.id, value_id=1, project_id=project.id,
            event_id=1,
        )

        deletion = ScheduledDeletion.schedule(tk, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not GroupTagValue.objects.filter(key=tk.key, project_id=project.id).exists()
        assert not GroupTagKey.objects.filter(key=tk.key, project=project).exists()
        assert not TagValue.objects.filter(key=tk.key, project=project).exists()
        assert not TagKey.objects.filter(id=tk.id).exists()
        assert not EventTag.objects.filter(key_id=tk.id).exists()

        assert TagKey.objects.filter(id=tk2.id).exists()
        assert GroupTagKey.objects.filter(id=gtk2.id).exists()
        assert GroupTagValue.objects.filter(id=gtv2.id).exists()
        assert EventTag.objects.filter(key_id=tk2.id).exists()
コード例 #40
0
ファイル: test_group.py プロジェクト: Kayle009/sentry
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventMapping.objects.create(
            project_id=project.id,
            event_id='a' * 32,
            group_id=group.id,
        )
        EventAttachment.objects.create(
            event_id=event.event_id,
            group_id=event.group_id,
            project_id=event.project_id,
            file=File.objects.create(
                name='hello.png',
                type='image/png',
            ),
            name='hello.png',
        )
        UserReport.objects.create(
            group_id=group.id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key
        )
        tv = tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )
        GroupAssignee.objects.create(
            group=group,
            project=project,
            user=self.user,
        )
        GroupHash.objects.create(
            project=project,
            group=group,
            hash=uuid4().hex,
        )
        GroupMeta.objects.create(
            group=group,
            key='foo',
            value='bar',
        )
        GroupRedirect.objects.create(
            group_id=group.id,
            previous_group_id=1,
        )

        deletion = ScheduledDeletion.schedule(group, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id,
            group_id=group.id,
        ).exists()
        assert not EventMapping.objects.filter(
            group_id=group.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
        assert not UserReport.objects.filter(group_id=group.id).exists()
        assert not GroupRedirect.objects.filter(group_id=group.id).exists()
        assert not GroupHash.objects.filter(group_id=group.id).exists()
        assert not Group.objects.filter(id=group.id).exists()
コード例 #41
0
    def test_simple(self):
        team = self.create_team(name='test', slug='test')
        project = self.create_project(team=team, name='test1', slug='test1')
        group = self.create_group(project=project)
        key = 'foo'
        value = 'bar'
        tk = tagstore.create_tag_key(
            key=key,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_tag_value(
            key=key,
            value=value,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group.id, project_id=project.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk.id, 1),
            ]
        )

        project2 = self.create_project(team=team, name='test2')
        group2 = self.create_group(project=project2)
        tk2 = tagstore.create_tag_key(project2.id, self.environment.id, key)
        tagstore.create_group_tag_key(
            key=key,
            group_id=group2.id,
            project_id=project2.id,
            environment_id=self.environment.id)
        tagstore.create_group_tag_value(
            key=key, value=value, group_id=group2.id, project_id=project2.id, environment_id=self.environment.id
        )
        tagstore.create_event_tags(
            group_id=group2.id,
            project_id=project.id,
            event_id=1,
            tags=[
                (tk2.id, 1),
            ],
        )

        deletion = ScheduledDeletion.schedule(tk, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        try:
            tagstore.get_group_tag_value(group.id, key, value)
            assert False  # verify exception thrown
        except tagstore.GroupTagValueNotFound:
            pass
        try:
            tagstore.get_group_tag_key(group.id, key)
            assert False  # verify exception thrown
        except tagstore.GroupTagKeyNotFound:
            pass
        try:
            tagstore.get_tag_value(project.id, key, value)
            assert False  # verify exception thrown
        except tagstore.TagValueNotFound:
            pass
        try:
            tagstore.get_tag_key(project.id, key)
            assert False  # verify exception thrown
        except tagstore.TagKeyNotFound:
            pass

        assert tagstore.get_tag_key(project2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.id, key) is not None
        assert tagstore.get_group_tag_value(group2.id, key, value) is not None
        assert tagstore.get_event_tag_qs(key_id=tk.id).exists()
        assert tagstore.get_event_tag_qs(key_id=tk2.id).exists()
コード例 #42
0
ファイル: test_project.py プロジェクト: Kayle009/sentry
    def test_simple(self):
        project = self.create_project(
            name='test',
        )
        group = self.create_group(project=project)
        event = self.create_event(group=group)
        GroupAssignee.objects.create(group=group, project=project, user=self.user)
        GroupMeta.objects.create(group=group, key='foo', value='bar')
        release = Release.objects.create(version='a' * 32, organization_id=project.organization_id)
        release.add_project(project)
        GroupResolution.objects.create(group=group, release=release)
        env = Environment.objects.create(
            organization_id=project.organization_id, project_id=project.id, name='foo'
        )
        env.add_project(project)
        repo = Repository.objects.create(
            organization_id=project.organization_id,
            name=project.name,
        )
        commit_author = CommitAuthor.objects.create(
            organization_id=project.organization_id,
            name='foo',
            email='*****@*****.**',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=project.organization_id,
            author=commit_author,
            key='a' * 40,
        )
        ReleaseCommit.objects.create(
            organization_id=project.organization_id,
            project_id=project.id,
            release=release,
            commit=commit,
            order=0,
        )
        file = File.objects.create(
            name='debug-file',
            type='project.dif',
        )
        dif = ProjectDebugFile.objects.create(
            file=file,
            debug_id='uuid',
            cpu_name='cpu',
            object_name='object',
            project=project,
        )
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(
                name='hello.png',
                type='image/png',
            ),
            name='hello.png',
        )

        deletion = ScheduledDeletion.schedule(project, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Project.objects.filter(id=project.id).exists()
        assert not EnvironmentProject.objects.filter(
            project_id=project.id, environment_id=env.id
        ).exists()
        assert Environment.objects.filter(id=env.id).exists()
        assert not Group.objects.filter(project_id=project.id).exists()
        assert not Event.objects.filter(project_id=project.id).exists()
        assert not EventAttachment.objects.filter(project_id=project.id).exists()
        assert Release.objects.filter(id=release.id).exists()
        assert ReleaseCommit.objects.filter(release_id=release.id).exists()
        assert Commit.objects.filter(id=commit.id).exists()
        assert not ProjectDebugFile.objects.filter(id=dif.id).exists()
        assert not File.objects.filter(id=file.id).exists()
コード例 #43
0
ファイル: test_event.py プロジェクト: Kayle009/sentry
    def test_simple(self):
        project = self.create_project()
        group = self.create_group(
            project=project,
        )
        event = self.create_event(group=group)
        EventAttachment.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            file=File.objects.create(
                name='hello.png',
                type='image/png',
            ),
            name='hello.png',
        )
        UserReport.objects.create(
            event_id=event.event_id,
            project_id=event.project_id,
            name='Jane Doe',
        )
        key = 'key'
        value = 'value'
        tk = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key
        )
        tv = tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value
        )
        tagstore.create_event_tags(
            event_id=event.id,
            group_id=group.id,
            project_id=project.id,
            environment_id=self.environment.id,
            tags=[
                (tk.key, tv.value),
            ],
        )

        deletion = ScheduledDeletion.schedule(event, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert not Event.objects.filter(id=event.id).exists()
        assert not EventAttachment.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not EventMapping.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not UserReport.objects.filter(
            event_id=event.event_id,
            project_id=project.id,
        ).exists()
        assert not EventTag.objects.filter(event_id=event.id).exists()
コード例 #44
0
ファイル: test_organization.py プロジェクト: yaoqi/sentry
    def test_simple(self):
        org = self.create_organization(
            name='test',
        )
        org2 = self.create_organization(name='test2')
        self.create_team(organization=org, name='test1')
        self.create_team(organization=org, name='test2')
        release = Release.objects.create(version='a' * 32, organization_id=org.id)
        repo = Repository.objects.create(
            organization_id=org.id,
            name=org.name,
            provider='dummy',
        )
        commit_author = CommitAuthor.objects.create(
            organization_id=org.id,
            name='foo',
            email='*****@*****.**',
        )
        commit = Commit.objects.create(
            repository_id=repo.id,
            organization_id=org.id,
            author=commit_author,
            key='a' * 40,
        )
        pull_request = PullRequest.objects.create(
            repository_id=repo.id,
            organization_id=org.id,
            author=commit_author,
            key='b' * 40,
        )
        ReleaseCommit.objects.create(
            organization_id=org.id,
            release=release,
            commit=commit,
            order=0,
        )

        env = Environment.objects.create(organization_id=org.id, project_id=4, name='foo')
        release_env = ReleaseEnvironment.objects.create(
            organization_id=org.id, project_id=4, release_id=release.id, environment_id=env.id
        )

        external_issue = ExternalIssue.objects.create(
            organization_id=org.id,
            integration_id=5,
            key='12345',
        )

        dashboard = Dashboard.objects.create(
            organization_id=org.id,
            title='The Dashboard',
            created_by=self.user,
        )
        widget_1 = Widget.objects.create(
            dashboard=dashboard,
            order=1,
            title='Widget 1',
            display_type=0,
        )
        widget_2 = Widget.objects.create(
            dashboard=dashboard,
            order=2,
            title='Widget 2',
            display_type=5,
        )
        widget_1_data = WidgetDataSource.objects.create(
            widget=widget_1,
            order=1,
            type=0,
            name='Incoming data',
        )
        widget_2_data_1 = WidgetDataSource.objects.create(
            widget=widget_2,
            order=1,
            type=0,
            name='Incoming data',
        )
        widget_2_data_2 = WidgetDataSource.objects.create(
            widget=widget_2,
            order=2,
            type=0,
            name='Outcoming data',
        )

        deletion = ScheduledDeletion.schedule(org, days=0)
        deletion.update(in_progress=True)

        with self.tasks():
            run_deletion(deletion.id)

        assert Organization.objects.filter(id=org2.id).exists()

        assert not Organization.objects.filter(id=org.id).exists()
        assert not Environment.objects.filter(id=env.id).exists()
        assert not ReleaseEnvironment.objects.filter(id=release_env.id).exists()
        assert not Repository.objects.filter(id=repo.id).exists()
        assert not ReleaseCommit.objects.filter(organization_id=org.id).exists()
        assert not Release.objects.filter(organization_id=org.id).exists()
        assert not CommitAuthor.objects.filter(id=commit_author.id).exists()
        assert not Commit.objects.filter(id=commit.id).exists()
        assert not PullRequest.objects.filter(id=pull_request.id).exists()
        assert not ExternalIssue.objects.filter(id=external_issue.id).exists()
        assert not Dashboard.objects.filter(id=dashboard.id).exists()
        assert not Widget.objects.filter(id__in=[widget_1.id, widget_2.id]).exists()
        assert not WidgetDataSource.objects.filter(
            id__in=[
                widget_1_data.id,
                widget_2_data_1.id,
                widget_2_data_2.id]).exists()