Exemplo n.º 1
0
    def test_simple(self):
        project = self.create_project()

        for key in ('foo', 'bar', 'environment'):
            tagstore.create_tag_key(
                project_id=project.id,
                environment_id=None,
                key=key,
            )

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tags',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
            }
        )
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        data = {v['key']: v for v in response.data}
        assert len(data) == 3

        data['foo']['canDelete'] is True
        data['bar']['canDelete'] is True
        data['environment']['canDelete'] is False
Exemplo n.º 2
0
    def _create_tags(self, group, environment_id=None):
        for key, values in group.data['tags']:
            tagstore.create_tag_key(
                project_id=group.project_id,
                environment_id=environment_id,
                key=key,
            )
            tagstore.create_group_tag_key(
                project_id=group.project_id,
                group_id=group.id,
                environment_id=environment_id,
                key=key,
            )

            if not isinstance(values, list):
                values = [values]
            for value in values:
                tagstore.create_tag_value(
                    project_id=group.project_id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )
                tagstore.create_group_tag_value(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )
Exemplo n.º 3
0
    def test_simple(self):
        key, value = 'foo', 'bar'

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id, environment_id=self.environment.id, key=key)
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )
        tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/{}/values/'.format(group.id, key)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['value'] == 'bar'
Exemplo n.º 4
0
    def _create_tags(self, group, environment_id=None):
        for key, values in group.data["tags"]:
            tagstore.create_tag_key(project_id=group.project_id,
                                    environment_id=environment_id,
                                    key=key)
            tagstore.create_group_tag_key(
                project_id=group.project_id,
                group_id=group.id,
                environment_id=environment_id,
                key=key,
            )

            if not isinstance(values, list):
                values = [values]
            for value in values:
                tagstore.create_tag_value(project_id=group.project_id,
                                          environment_id=environment_id,
                                          key=key,
                                          value=value)
                tagstore.create_group_tag_value(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=environment_id,
                    key=key,
                    value=value,
                )
Exemplo n.º 5
0
    def test_simple(self):
        group = self.create_group()
        group.data['tags'] = (['foo', 'bar'], ['biz', 'baz'])
        group.save()

        for key, value in group.data['tags']:
            tagstore.create_tag_key(
                project_id=group.project_id,
                key=key,
            )
            tagstore.create_tag_value(
                project_id=group.project_id,
                key=key,
                value=value,
            )
            tagstore.create_group_tag_key(
                project_id=group.project_id,
                group_id=group.id,
                key=key,
            )
            tagstore.create_group_tag_value(
                project_id=group.project_id,
                group_id=group.id,
                key=key,
                value=value,
            )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/'.format(group.id)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 2
Exemplo n.º 6
0
    def test_simple(self):
        key, value = "foo", "bar"

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=None,
                                key=key)
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=None,
                                  key=key,
                                  value=value)
        tagstore.create_group_tag_value(project_id=project.id,
                                        group_id=group.id,
                                        environment_id=None,
                                        key=key,
                                        value=value)

        self.login_as(user=self.user)

        url = u"/api/0/issues/{}/tags/{}/values/".format(group.id, key)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]["value"] == "bar"
    def test_simple(self):
        project = self.create_project()

        for key in ('foo', 'bar', 'environment'):
            tagstore.create_tag_key(
                project_id=project.id,
                environment_id=None,
                key=key,
            )

        self.login_as(user=self.user)

        url = reverse('sentry-api-0-project-tags',
                      kwargs={
                          'organization_slug': project.organization.slug,
                          'project_slug': project.slug,
                      })
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        data = {v['key']: v for v in response.data}
        assert len(data) == 3

        data['foo']['canDelete'] is True
        data['bar']['canDelete'] is True
        data['environment']['canDelete'] is False
Exemplo n.º 8
0
    def setUp(self):
        super(ProjectTagsSettingsTest, self).setUp()
        self.user = self.create_user('*****@*****.**')
        self.org = self.create_organization(
            name='Rowdy Tiger',
            owner=None,
        )
        self.team = self.create_team(organization=self.org,
                                     name='Mariachi Band')
        self.project = self.create_project(
            organization=self.org,
            teams=[self.team],
            name='Bengal',
        )
        self.create_member(
            user=self.user,
            organization=self.org,
            role='owner',
            teams=[self.team],
        )

        tagstore.create_tag_key(project_id=self.project.id,
                                environment_id=None,
                                key="Foo")

        self.login_as(self.user)
        self.path1 = '/{}/{}/settings/tags/'.format(self.org.slug,
                                                    self.project.slug)
Exemplo n.º 9
0
    def test_simple(self):
        this_group = self.create_group()
        this_group.data['tags'] = (['foo', ['bar', 'quux']], ['biz', 'baz'], [
                                   'sentry:release', 'releaseme'])

        this_group.save()

        other_group = self.create_group()
        other_group.data['tags'] = (['abc', 'xyz'],)
        other_group.save()

        for group in (this_group, other_group):
            for key, values in group.data['tags']:
                tagstore.create_tag_key(
                    project_id=group.project_id,
                    environment_id=None,
                    key=key,
                )
                tagstore.create_group_tag_key(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=None,
                    key=key,
                )

                if not isinstance(values, list):
                    values = [values]
                for value in values:
                    tagstore.create_tag_value(
                        project_id=group.project_id,
                        environment_id=None,
                        key=key,
                        value=value,
                    )
                    tagstore.create_group_tag_value(
                        project_id=group.project_id,
                        group_id=group.id,
                        environment_id=None,
                        key=key,
                        value=value,
                    )

        self.login_as(user=self.user)

        url = u'/api/0/issues/{}/tags/'.format(this_group.id)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 3

        data = sorted(response.data, key=lambda r: r['key'])
        assert data[0]['key'] == 'biz'
        assert len(data[0]['topValues']) == 1

        assert data[1]['key'] == 'foo'
        assert len(data[1]['topValues']) == 2

        assert data[2]['key'] == 'release'  # Formatted from sentry:release
        assert len(data[2]['topValues']) == 1
Exemplo n.º 10
0
    def test_simple(self):
        key, value = 'foo', u'b\xe4r'

        # Drop microsecond value for MySQL
        now = timezone.now().replace(microsecond=0)

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=self.environment.id,
                                key=key)
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )
        group_tag_value = tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
            times_seen=1,
            first_seen=now - timedelta(hours=1),
            last_seen=now,
        )

        self.login_as(user=self.user)

        url = '/{}/{}/issues/{}/tags/{}/export/?environment={}'.format(
            project.organization.slug, project.slug, group.id, key,
            self.environment.name)

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.streaming
        assert response['Content-Type'] == 'text/csv'
        rows = list(response.streaming_content)
        for idx, row in enumerate(rows):
            row = row.decode('utf-8')
            assert row.endswith(u'\r\n')
            bits = row[:-2].split(',')
            if idx == 0:
                assert bits == [
                    'value', 'times_seen', 'last_seen', 'first_seen'
                ]
            else:
                assert bits[0] == value
                assert bits[1] == '1'
                assert bits[2] == group_tag_value.last_seen.strftime(
                    '%Y-%m-%dT%H:%M:%S.%fZ')
                assert bits[3] == group_tag_value.first_seen.strftime(
                    '%Y-%m-%dT%H:%M:%S.%fZ')
Exemplo n.º 11
0
    def test_simple(self):
        key, value = 'foo', u'b\xe4r'

        # Drop microsecond value for MySQL
        now = timezone.now().replace(microsecond=0)

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key
        )
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
        )
        group_tag_value = tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
            times_seen=1,
            first_seen=now - timedelta(hours=1),
            last_seen=now,
        )

        self.login_as(user=self.user)

        url = '/{}/{}/issues/{}/tags/{}/export/?environment={}'.format(
            project.organization.slug, project.slug, group.id, key, self.environment.name
        )

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.streaming
        assert response['Content-Type'] == 'text/csv'
        rows = list(response.streaming_content)
        for idx, row in enumerate(rows):
            row = row.decode('utf-8')
            assert row.endswith(u'\r\n')
            bits = row[:-2].split(',')
            if idx == 0:
                assert bits == ['value', 'times_seen', 'last_seen', 'first_seen']
            else:
                assert bits[0] == value
                assert bits[1] == '1'
                assert bits[2] == group_tag_value.last_seen.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
                assert bits[3] == group_tag_value.first_seen.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
Exemplo n.º 12
0
    def test_simple(self):
        key, value = "foo", u"b\xe4r"

        now = timezone.now()

        project = self.create_project()
        group = self.create_group(project=project)
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=self.environment.id,
                                key=key)
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=self.environment.id,
                                  key=key,
                                  value=value)
        group_tag_value = tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key=key,
            value=value,
            times_seen=1,
            first_seen=now - timedelta(hours=1),
            last_seen=now,
        )

        self.login_as(user=self.user)

        url = u"/{}/{}/issues/{}/tags/{}/export/?environment={}".format(
            project.organization.slug, project.slug, group.id, key,
            self.environment.name)

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.streaming
        assert response["Content-Type"] == "text/csv"
        rows = list(response.streaming_content)
        for idx, row in enumerate(rows):
            row = row.decode("utf-8")
            assert row.endswith(u"\r\n")
            bits = row[:-2].split(",")
            if idx == 0:
                assert bits == [
                    "value", "times_seen", "last_seen", "first_seen"
                ]
            else:
                assert bits[0] == value
                assert bits[1] == "1"
                assert bits[2] == group_tag_value.last_seen.strftime(
                    "%Y-%m-%dT%H:%M:%S.%fZ")
                assert bits[3] == group_tag_value.first_seen.strftime(
                    "%Y-%m-%dT%H:%M:%S.%fZ")
Exemplo n.º 13
0
    def test_simple(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=None,
            key='foo',
            values_seen=16
        )

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-details',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.data['id'] == six.text_type(tagkey.id)
        assert response.data['uniqueValues'] == tagkey.values_seen
Exemplo n.º 14
0
    def test_query(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id, key='foo')
        tagstore.create_tag_value(project_id=project.id, key='foo', value='bar')

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-values',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )
        response = self.client.get(url + '?query=bar')

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['value'] == 'bar'

        response = self.client.get(url + '?query=foo')

        assert response.status_code == 200
        assert len(response.data) == 0
Exemplo n.º 15
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()
Exemplo n.º 16
0
    def test_query(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id, environment_id=None, key="foo")
        tagstore.create_tag_value(
            project_id=project.id, environment_id=None, key="foo", value="bar"
        )

        self.login_as(user=self.user)

        url = reverse(
            "sentry-api-0-project-tagkey-values",
            kwargs={
                "organization_slug": project.organization.slug,
                "project_slug": project.slug,
                "key": tagkey.key,
            },
        )
        response = self.client.get(url + "?query=bar")

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]["value"] == "bar"

        response = self.client.get(url + "?query=foo")

        assert response.status_code == 200
        assert len(response.data) == 0
Exemplo n.º 17
0
    def test_simple(self):
        group = self.create_group()
        group.data["tags"] = (["foo", "bar"],)
        group.save()

        key, value = group.data["tags"][0]
        tagkey = tagstore.create_tag_key(
            project_id=group.project_id, environment_id=None, key=key, values_seen=2
        )
        tagstore.create_tag_value(
            project_id=group.project_id, environment_id=None, key=key, value=value, times_seen=4
        )
        tagstore.create_group_tag_key(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            values_seen=1,
        )
        tagstore.create_group_tag_value(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=3,
        )

        self.login_as(user=self.user)

        url = u"/api/0/issues/{}/tags/{}/".format(group.id, tagkey.key)
        response = self.client.get(url, format="json")
        assert response.status_code == 200, response.content
        assert response.data["key"] == six.text_type(tagkey.key)
        assert response.data["totalValues"] == 3
Exemplo n.º 18
0
    def test_simple(self, mock_delete_tag_key):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id, key='foo')

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-details',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )

        response = self.client.delete(url)

        assert response.status_code == 204

        mock_delete_tag_key.delay.assert_called_once_with(object_id=tagkey.id)

        assert tagstore.get_tag_key(
            project.id,
            tagkey.key,
            status=TagKeyStatus.PENDING_DELETION
        ).status == TagKeyStatus.PENDING_DELETION
Exemplo n.º 19
0
    def test_simple(self, mock_delete_tag_key):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id,
                                         environment_id=None,
                                         key='foo')

        self.login_as(user=self.user)

        url = reverse('sentry-api-0-project-tagkey-details',
                      kwargs={
                          'organization_slug': project.organization.slug,
                          'project_slug': project.slug,
                          'key': tagkey.key,
                      })

        response = self.client.delete(url)

        assert response.status_code == 204

        if settings.SENTRY_TAGSTORE.startswith('sentry.tagstore.multi'):
            backend_count = len(
                settings.SENTRY_TAGSTORE_OPTIONS.get('backends', []))
            assert mock_delete_tag_key.delay.call_count == backend_count
        else:
            from sentry.tagstore.models import TagKey
            mock_delete_tag_key.delay.assert_called_once_with(
                object_id=tagkey.id, model=TagKey)

        assert tagstore.get_tag_key(
            project.id,
            None,  # environment_id
            tagkey.key,
            status=TagKeyStatus.PENDING_DELETION
        ).status == TagKeyStatus.PENDING_DELETION
Exemplo n.º 20
0
    def test_simple(self, mock_delete_tag_key):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key='foo')

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-details',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )

        response = self.client.delete(url)

        assert response.status_code == 204

        mock_delete_tag_key.delay.assert_called_once_with(object_id=tagkey.id)

        assert tagstore.get_tag_key(
            project.id,
            None,  # environment_id
            tagkey.key,
            status=TagKeyStatus.PENDING_DELETION
        ).status == TagKeyStatus.PENDING_DELETION
Exemplo n.º 21
0
    def test_simple(self, mock_delete_tag_key):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=None,
            key='foo')

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-details',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )

        response = self.client.delete(url)

        assert response.status_code == 204

        if settings.SENTRY_TAGSTORE.startswith('sentry.tagstore.multi'):
            backend_count = len(settings.SENTRY_TAGSTORE_OPTIONS.get('backends', []))
            assert mock_delete_tag_key.delay.call_count == backend_count
        else:
            from sentry.tagstore.models import TagKey
            mock_delete_tag_key.delay.assert_called_once_with(object_id=tagkey.id, model=TagKey)

        assert tagstore.get_tag_key(
            project.id,
            None,  # environment_id
            tagkey.key,
            status=TagKeyStatus.PENDING_DELETION
        ).status == TagKeyStatus.PENDING_DELETION
Exemplo n.º 22
0
    def test_protected(self, mock_delete_tag_key):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id,
                                         environment_id=None,
                                         key="environment")

        self.login_as(user=self.user)

        url = reverse(
            "sentry-api-0-project-tagkey-details",
            kwargs={
                "organization_slug": project.organization.slug,
                "project_slug": project.slug,
                "key": tagkey.key,
            },
        )

        response = self.client.delete(url)

        assert response.status_code == 403
        assert mock_delete_tag_key.delay.call_count == 0

        assert (tagstore.get_tag_key(
            project.id,
            None,
            tagkey.key,
            status=TagKeyStatus.VISIBLE  # environment_id
        ).status == TagKeyStatus.VISIBLE)
Exemplo n.º 23
0
    def test_simple(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id,
                                         environment_id=self.environment.id,
                                         key='foo')
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=self.environment.id,
                                  key='foo',
                                  value='bar')

        self.login_as(user=self.user)

        url = reverse('sentry-api-0-project-tagkey-values',
                      kwargs={
                          'organization_slug': project.organization.slug,
                          'project_slug': project.slug,
                          'key': tagkey.key,
                      })

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['value'] == 'bar'
Exemplo n.º 24
0
    def test_protected(self, mock_delete_tag_key):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=None,
            key='environment')

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-details',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )

        response = self.client.delete(url)

        assert response.status_code == 403
        assert mock_delete_tag_key.delay.call_count == 0

        assert tagstore.get_tag_key(
            project.id,
            None,  # environment_id
            tagkey.key,
            status=TagKeyStatus.VISIBLE
        ).status == TagKeyStatus.VISIBLE
Exemplo n.º 25
0
    def test_simple(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key='foo',
            values_seen=16
        )

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tagkey-details',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
                'key': tagkey.key,
            }
        )

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.data['id'] == six.text_type(tagkey.id)
        assert response.data['uniqueValues'] == tagkey.values_seen
Exemplo n.º 26
0
    def test_simple(self):
        project = self.create_project()

        for key in ('foo', 'bar'):
            tagstore.create_tag_key(
                project_id=project.id,
                key=key,
            )

        self.login_as(user=self.user)

        url = reverse('sentry-api-0-project-tags',
                      kwargs={
                          'organization_slug': project.organization.slug,
                          'project_slug': project.slug,
                      })
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 2
Exemplo n.º 27
0
    def test_simple(self):
        this_group = self.create_group()
        this_group.data['tags'] = (['foo', 'bar'], ['biz', 'baz'])
        this_group.save()

        other_group = self.create_group()
        other_group.data['tags'] = (['abc', 'xyz'], )
        other_group.save()

        for group in (this_group, other_group):
            for key, value in group.data['tags']:
                tagstore.create_tag_key(
                    project_id=group.project_id,
                    environment_id=self.environment.id,
                    key=key,
                )
                tagstore.create_tag_value(
                    project_id=group.project_id,
                    environment_id=self.environment.id,
                    key=key,
                    value=value,
                )
                tagstore.create_group_tag_key(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=self.environment.id,
                    key=key,
                )
                tagstore.create_group_tag_value(
                    project_id=group.project_id,
                    group_id=group.id,
                    environment_id=self.environment.id,
                    key=key,
                    value=value,
                )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/'.format(this_group.id)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 2
Exemplo n.º 28
0
    def test_simple(self):
        project = self.create_project()

        for key in ('foo', 'bar'):
            tagstore.create_tag_key(
                project_id=project.id,
                key=key,
            )

        self.login_as(user=self.user)

        url = reverse(
            'sentry-api-0-project-tags',
            kwargs={
                'organization_slug': project.organization.slug,
                'project_slug': project.slug,
            }
        )
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert len(response.data) == 2
Exemplo n.º 29
0
    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()
Exemplo n.º 30
0
    def test(self):
        user = self.create_user()
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id, key='key')
        grouptagkey = GroupTagKey.objects.create(
            project_id=project.id,
            group_id=self.create_group(project=project).id,
            key=tagkey.key)

        result = serialize(grouptagkey, user)
        assert result['id'] == six.text_type(grouptagkey.id)
        assert result['key'] == 'key'
Exemplo n.º 31
0
    def test_user_tag(self):
        project = self.create_project()
        group = self.create_group(project=project)
        euser = EventUser.objects.create(
            project_id=project.id,
            ident='1',
            email='*****@*****.**',
            username='******',
            ip_address='127.0.0.1',
        )
        tagstore.create_tag_key(
            project_id=project.id,
            environment_id=self.environment.id,
            key='sentry:user',
        )
        tagstore.create_tag_value(
            project_id=project.id,
            environment_id=self.environment.id,
            key='sentry:user',
            value=euser.tag_value,
        )
        tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=self.environment.id,
            key='sentry:user',
            value=euser.tag_value,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/user/values/'.format(group.id)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]['email'] == '*****@*****.**'
        assert response.data[0]['value'] == euser.tag_value
    def setUp(self):
        super(ProjectReleaseTrackingSettingsTest, self).setUp()
        self.user = self.create_user('*****@*****.**')
        self.org = self.create_organization(
            name='Rowdy Tiger',
            owner=None,
        )
        self.team = self.create_team(organization=self.org, name='Mariachi Band')
        self.project = self.create_project(
            organization=self.org,
            teams=[self.team],
            name='Bengal',
        )
        self.create_member(
            user=self.user,
            organization=self.org,
            role='owner',
            teams=[self.team],
        )

        tagstore.create_tag_key(project_id=self.project.id, environment_id=None, key="Foo")

        self.login_as(self.user)
        self.path1 = u'/{}/{}/settings/release-tracking/'.format(self.org.slug, self.project.slug)
Exemplo n.º 33
0
    def test_user_tag(self):
        project = self.create_project()
        group = self.create_group(project=project)
        euser = EventUser.objects.create(
            project_id=project.id,
            ident="1",
            email="*****@*****.**",
            username="******",
            ip_address="127.0.0.1",
        )
        tagstore.create_tag_key(project_id=project.id,
                                environment_id=None,
                                key="sentry:user")
        tagstore.create_tag_value(project_id=project.id,
                                  environment_id=None,
                                  key="sentry:user",
                                  value=euser.tag_value)
        tagstore.create_group_tag_value(
            project_id=project.id,
            group_id=group.id,
            environment_id=None,
            key="sentry:user",
            value=euser.tag_value,
        )

        self.login_as(user=self.user)

        url = u"/api/0/issues/{}/tags/user/values/".format(group.id)

        response = self.client.get(url)

        assert response.status_code == 200
        assert len(response.data) == 1

        assert response.data[0]["email"] == "*****@*****.**"
        assert response.data[0]["value"] == euser.tag_value
Exemplo n.º 34
0
    def test(self):
        user = self.create_user()
        project = self.create_project()
        tagkey = tagstore.create_tag_key(
            project_id=project.id,
            key='key'
        )
        grouptagkey = tagstore.create_group_tag_key(
            project_id=project.id,
            group_id=self.create_group(project=project).id,
            key=tagkey.key
        )

        result = serialize(grouptagkey, user)
        assert result['id'] == six.text_type(grouptagkey.id)
        assert result['key'] == 'key'
Exemplo n.º 35
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 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
Exemplo n.º 36
0
    def test_simple(self, mock_delete_tag_key, mock_eventstream):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id,
                                         environment_id=None,
                                         key="foo")

        self.login_as(user=self.user)

        eventstream_state = object()
        mock_eventstream.start_delete_tag = mock.Mock(
            return_value=eventstream_state)

        url = reverse(
            "sentry-api-0-project-tagkey-details",
            kwargs={
                "organization_slug": project.organization.slug,
                "project_slug": project.slug,
                "key": tagkey.key,
            },
        )

        response = self.client.delete(url)

        assert response.status_code == 204

        if settings.SENTRY_TAGSTORE.startswith("sentry.tagstore.multi"):
            backend_count = len(
                settings.SENTRY_TAGSTORE_OPTIONS.get("backends", []))
            assert mock_delete_tag_key.delay.call_count == backend_count
        else:
            from sentry.tagstore.models import TagKey

            mock_delete_tag_key.delay.assert_called_once_with(
                object_id=tagkey.id, model=TagKey)

        assert (tagstore.get_tag_key(
            project.id,
            None,
            tagkey.key,
            status=TagKeyStatus.PENDING_DELETION  # environment_id
        ).status == TagKeyStatus.PENDING_DELETION)

        mock_eventstream.start_delete_tag.assert_called_once_with(
            project.id, "foo")
        mock_eventstream.end_delete_tag.assert_called_once_with(
            eventstream_state)
Exemplo n.º 37
0
    def test_simple(self):
        group = self.create_group()
        group.data['tags'] = (['foo', 'bar'], )
        group.save()

        key, value = group.data['tags'][0]
        tagkey = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            values_seen=2
        )
        tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=4
        )
        tagstore.create_group_tag_key(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            values_seen=1,
        )
        tagstore.create_group_tag_value(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=3,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/{}/'.format(group.id, tagkey.key)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert response.data['id'] == six.text_type(tagkey.id)
        assert response.data['key'] == six.text_type(tagkey.key)
        assert response.data['uniqueValues'] == 1
        assert response.data['totalValues'] == 3
Exemplo n.º 38
0
    def test_simple(self):
        group = self.create_group()
        group.data['tags'] = (['foo', 'bar'], )
        group.save()

        key, value = group.data['tags'][0]
        tagkey = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            values_seen=2
        )
        tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=4
        )
        tagstore.create_group_tag_key(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            values_seen=1,
        )
        tagstore.create_group_tag_value(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=None,
            key=key,
            value=value,
            times_seen=3,
        )

        self.login_as(user=self.user)

        url = '/api/0/issues/{}/tags/{}/'.format(group.id, tagkey.key)
        response = self.client.get(url, format='json')
        assert response.status_code == 200, response.content
        assert response.data['key'] == six.text_type(tagkey.key)
        assert response.data['uniqueValues'] == 1
        assert response.data['totalValues'] == 3
Exemplo n.º 39
0
    def test_simple(self):
        project = self.create_project()
        tagkey = tagstore.create_tag_key(project_id=project.id,
                                         environment_id=None,
                                         key="foo",
                                         values_seen=16)

        self.login_as(user=self.user)

        url = reverse(
            "sentry-api-0-project-tagkey-details",
            kwargs={
                "organization_slug": project.organization.slug,
                "project_slug": project.slug,
                "key": tagkey.key,
            },
        )

        response = self.client.get(url)

        assert response.status_code == 200
        assert response.data["uniqueValues"] == tagkey.values_seen
Exemplo n.º 40
0
    def test_simple(self):
        tagstore.create_tag_key(project_id=self.project.id, key='site')
        tagstore.create_tag_key(project_id=self.project.id, key='url')
        tagstore.create_tag_key(project_id=self.project.id, key='os')

        self.login_as(self.user)

        resp = self.client.get(self.path)
        assert resp.status_code == 200
        self.assertTemplateUsed('sentry/projects/manage_tags.html')
        assert resp.context['organization'] == self.organization
        assert resp.context['team'] == self.team
        assert resp.context['project'] == self.project
        tag_list = [t.key for t in resp.context['tag_list']]
        assert 'site' in tag_list
        assert 'url' in tag_list
        assert 'os' in tag_list
Exemplo n.º 41
0
    def test_tags(self):
        self.login_as(user=self.user)

        group = self.create_group()
        event_1 = self.create_event(event_id='a' * 32, group=group)
        event_2 = self.create_event(event_id='b' * 32, group=group)

        tagkey_1 = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='foo')
        tagkey_2 = tagstore.create_tag_key(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar')
        tagvalue_1 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='foo',
            value='baz')
        tagvalue_2 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='biz')
        tagvalue_3 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='buz')

        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_1.id,
            tags=[
                (tagkey_1.key, tagvalue_1.value),
                (tagkey_2.key, tagvalue_3.value),
            ],
        )
        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_2.id,
            tags=[
                (tagkey_2.key, tagvalue_2.value),
            ],
        )

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?query=foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:biz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_2.id)

        response = self.client.get(url + '?query=bar:biz%20foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:buz%20foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=a:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0
Exemplo n.º 42
0
    def test_simple(self):
        from sentry.tagstore.tasks import delete_tag_key as delete_tag_key_task

        team = self.create_team(name='test', slug='test')
        project = self.create_project(teams=[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)
        tv = 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,
            environment_id=self.environment.id,
            event_id=1,
            tags=[
                (tk.key, tv.value),
            ],
        )

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

        with self.tasks():
            from sentry.tagstore.models import TagKey
            delete_tag_key_task(object_id=tk.id, model=TagKey)

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

        assert tagstore.get_tag_key(project2.id, env2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.project_id, group2.id, env2.id, key) is not None
        assert tagstore.get_group_tag_value(
            group2.project_id, group2.id, env2.id, key, value) is not None
        assert EventTag.objects.filter(key_id=tk2.id).exists()
Exemplo n.º 43
0
    def test_simple(self):
        from sentry.tagstore.tasks import delete_tag_key as delete_tag_key_task

        team = self.create_team(name='test', slug='test')
        project = self.create_project(teams=[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)
        tv = 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,
            environment_id=self.environment.id,
            event_id=1,
            tags=[
                (tk.key, tv.value),
            ],
        )

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

        with self.tasks():
            from sentry.tagstore.models import TagKey
            delete_tag_key_task(object_id=tk.id, model=TagKey)

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

        assert tagstore.get_tag_key(project2.id, env2.id, key) is not None
        assert tagstore.get_group_tag_key(group2.project_id, group2.id,
                                          env2.id, key) is not None
        assert tagstore.get_group_tag_value(group2.project_id, group2.id,
                                            env2.id, key, value) is not None
        assert EventTag.objects.filter(key_id=tk2.id).exists()
Exemplo n.º 44
0
    def test_simple(self):
        from sentry.tagstore.legacy.tasks import delete_tag_key

        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(key=key, project_id=project2.id,
                                      environment_id=self.environment.id)
        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)
            ],
        )

        with self.tasks():
            delete_tag_key(object_id=tk.id)

            assert tagstore.get_event_tag_qs(key_id=tk.id).exists()
            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=tk2.id).exists()
Exemplo n.º 45
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,
                                   environment_id=self.environment.id,
                                   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,
            environment_id=self.environment.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.project_id, group.id, None, key,
                                         value)
            assert False  # verify exception thrown
        except tagstore.GroupTagValueNotFound:
            pass
        try:
            tagstore.get_group_tag_key(group.project_id, group.id, None, key)
            assert False  # verify exception thrown
        except tagstore.GroupTagKeyNotFound:
            pass
        try:
            tagstore.get_tag_value(project.id, None, key, value)
            assert False  # verify exception thrown
        except tagstore.TagValueNotFound:
            pass
        try:
            tagstore.get_tag_key(project.id, None, key)
            assert False  # verify exception thrown
        except tagstore.TagKeyNotFound:
            pass

        assert tagstore.get_tag_key(project2.id, None, key) is not None
        assert tagstore.get_group_tag_key(group2.project_id, group2.id, None,
                                          key) is not None
        assert tagstore.get_group_tag_value(group2.project_id, group2.id, None,
                                            key, value) is not None
        assert EventTag.objects.filter(key_id=tk.id).exists()
        assert EventTag.objects.filter(key_id=tk2.id).exists()
Exemplo n.º 46
0
    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()
Exemplo n.º 47
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,
        )
        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()
Exemplo n.º 48
0
    def test_tags(self):
        self.login_as(user=self.user)

        group = self.create_group()
        event_1 = self.create_event(event_id='a' * 32, group=group)
        event_2 = self.create_event(event_id='b' * 32, group=group)

        tagkey_1 = tagstore.create_tag_key(project_id=group.project_id,
                                           environment_id=self.environment.id,
                                           key='foo')
        tagkey_2 = tagstore.create_tag_key(project_id=group.project_id,
                                           environment_id=self.environment.id,
                                           key='bar')
        tagvalue_1 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='foo',
            value='baz')
        tagvalue_2 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='biz')
        tagvalue_3 = tagstore.create_tag_value(
            project_id=group.project_id,
            environment_id=self.environment.id,
            key='bar',
            value='buz')

        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_1.id,
            tags=[
                (tagkey_1.key, tagvalue_1.value),
                (tagkey_2.key, tagvalue_3.value),
            ],
        )
        tagstore.create_event_tags(
            project_id=group.project_id,
            group_id=group.id,
            environment_id=self.environment.id,
            event_id=event_2.id,
            tags=[
                (tagkey_2.key, tagvalue_2.value),
            ],
        )

        url = u'/api/0/issues/{}/events/'.format(group.id)
        response = self.client.get(url + '?query=foo:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:biz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_2.id)

        response = self.client.get(url + '?query=bar:biz%20foo:baz',
                                   format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:buz%20foo:baz',
                                   format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 1
        assert response.data[0]['id'] == six.text_type(event_1.id)

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=a:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:b', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0

        response = self.client.get(url + '?query=bar:baz', format='json')

        assert response.status_code == 200, response.content
        assert len(response.data) == 0
Exemplo n.º 49
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()