def test_can_get_most_common_violations(self):
        self.db.query(Violation).delete()
        self.db.query(Key).delete()

        category = KeysCategoryFactory.create(name="SEO")
        for i in range(3):
            key = KeyFactory.create(name="some.random.fact.%s" % i, category=category)
            for j in range(i):
                ViolationFactory.create(key=key, value="value", points=10 * i + j)

        violation_definitions = {
            "some.random.fact.1": {"title": "SEO", "category": "SEO"},
            "some.random.fact.2": {"title": "SEO", "category": "SEO"},
        }

        violations = Violation.get_most_common_violations(self.db, violation_definitions)

        expect(violations).to_be_like(
            [
                {"count": 1, "key": "some.random.fact.1", "category": "SEO", "title": "SEO"},
                {"count": 2, "key": "some.random.fact.2", "category": "SEO", "title": "SEO"},
            ]
        )

        violations = Violation.get_most_common_violations(self.db, violation_definitions, sample_limit=2)

        expect(violations).to_be_like([{"count": 2, "key": "some.random.fact.2", "category": "SEO", "title": "SEO"}])
    def test_can_get_most_common_violations_names(self):
        for i in range(3):
            key = KeyFactory.create(name='some.random.fact.%s' % i)
            for j in range(i):
                ViolationFactory.create(key=key)

        violations = Violation.get_most_common_violations_names(self.db)

        expect(violations).to_be_like([('some.random.fact.1', 1), ('some.random.fact.2', 2)])
    def test_can_get_most_common_violations_names(self):
        for i in range(3):
            key = KeyFactory.create(name='some.random.fact.%s' % i)
            for j in range(i):
                ViolationFactory.create(key=key)

        violations = Violation.get_most_common_violations_names(self.db)

        expect(violations).to_be_like([('some.random.fact.1', 1), ('some.random.fact.2', 2)])
Example #4
0
    def test_to_dict_with_violations_definitions_params(self):
        violation1 = ViolationFactory.create(key=Key(name="some.random.fact.1"), value="value", points=120)

        violation2 = ViolationFactory.create(key=Key(name="some.random.fact.2"), value="violations", points=500)

        violation3 = ViolationFactory.create(
            key=Key(name="some.random.fact.3"), value={"page_url": "http://globo.com"}, points=300
        )

        violation4 = ViolationFactory.create(key=Key(name="some.random.fact.4"), value=None, points=100)

        violations_definitions = {
            "some.random.fact.1": {"description": "test"},
            "some.random.fact.2": {"description": "test for: %s"},
            "some.random.fact.3": {"description": "url: %(page_url)s"},
            "some.random.fact.4": {"description": "my description"},
        }

        expect(violation1.to_dict(violations_definitions, _)).to_be_like(
            {
                "key": "some.random.fact.1",
                "description": "test",
                "title": "undefined",
                "points": 120,
                "category": "undefined",
            }
        )

        expect(violation2.to_dict(violations_definitions, _)).to_be_like(
            {
                "key": "some.random.fact.2",
                "description": "test for: violations",
                "title": "undefined",
                "points": 500,
                "category": "undefined",
            }
        )

        expect(violation3.to_dict(violations_definitions, _)).to_be_like(
            {
                "key": "some.random.fact.3",
                "description": "url: http://globo.com",
                "title": "undefined",
                "points": 300,
                "category": "undefined",
            }
        )

        expect(violation4.to_dict(violations_definitions, _)).to_be_like(
            {
                "key": "some.random.fact.4",
                "description": "my description",
                "title": "undefined",
                "points": 100,
                "category": "undefined",
            }
        )
Example #5
0
    def test_get_group_by_key_id_for_all_domains(self):
        domains = [DomainFactory.create(name="g%d.com" % i) for i in range(2)]
        keys = [KeyFactory.create(name="random.fact.%s" % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(key=keys[i], domain=domains[j % 2])

        violations = Violation.get_group_by_key_id_for_all_domains(self.db)

        expect(violations).to_length(5)
        expect(violations[0]).to_be_like((keys[2].id, "g0.com", 2))
Example #6
0
    def test_get_group_by_key_id_for_all_domains(self):
        domains = [DomainFactory.create(name='g%d.com' % i) for i in range(2)]
        keys = [KeyFactory.create(name='random.fact.%s' % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(key=keys[i], domain=domains[j % 2])

        violations = Violation.get_group_by_key_id_for_all_domains(self.db)

        expect(violations).to_length(5)
        expect(violations[0]).to_be_like((keys[2].id, 'g0.com', 2))
Example #7
0
    def test_can_get_top_in_category_for_all_domains(self):
        domains = [DomainFactory.create(name="g%d.com" % i) for i in range(2)]
        keys = [KeyFactory.create(name="random.fact.%s" % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(key=keys[i], domain=domains[j % 2])
        violations = Violation.get_top_in_category_for_all_domains(self.db)

        expect(violations).to_length(5)
        top = ("g0.com", keys[2].category_id, str(keys[2]), 2)
        expect(violations[0]).to_be_like(top)
    def test_can_get_by_key_id_group_by_domain(self):
        domains = [DomainFactory.create(name="g%d.com" % i) for i in xrange(2)]
        keys = [KeyFactory.create(name="random.fact.%s" % i) for i in xrange(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(key=keys[i], domain=domains[j % 2])

        violations = Violation.get_by_key_id_group_by_domain(self.db, keys[1].id)
        expect(violations).to_be_like([("g0.com", 1), ("g1.com", 1)])

        violations = Violation.get_by_key_id_group_by_domain(self.db, keys[2].id)
        expect(violations).to_be_like([("g0.com", 2), ("g1.com", 1)])
    def test_can_get_top_in_category_for_all_domains(self):
        domains = [DomainFactory.create(name='g%d.com' % i) for i in range(2)]
        keys = [KeyFactory.create(name='random.fact.%s' % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(
                    key=keys[i],
                    domain=domains[j % 2]
                )
        violations = Violation.get_top_in_category_for_all_domains(self.db)

        expect(violations).to_length(5)
        top = ('g0.com', keys[2].category_id, str(keys[2]), 2)
        expect(violations[0]).to_be_like(top)
Example #10
0
    def test_can_get_by_key_name_domains(self):
        domains = [DomainFactory.create(name='g%d.com' % i) for i in range(2)]
        keys = [KeyFactory.create(name='random.fact.%s' % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(key=keys[i], domain=domains[j % 2])

        self.db.flush()

        self.server.application.violation_definitions = {
            'random.fact.%s' % i: {
                'title': 'SEO',
                'category': 'SEO',
                'generic_description': 'Desc',
                'key': keys[i]
            }
            for i in range(3)
        }

        response = yield self.authenticated_fetch('/violation/%s/domains' %
                                                  keys[2].name)

        violation = loads(response.body)

        expected_violation = {
            'domains': [{
                'name': 'g0.com',
                'count': 2
            }, {
                'name': 'g1.com',
                'count': 1
            }],
            'total':
            3,
            'title':
            'SEO',
            'category':
            'SEO',
            'description':
            'Desc'
        }

        expect(response.code).to_equal(200)
        expect(violation).to_length(5)
        expect(violation['domains']).to_length(2)
        expect(violation).to_be_like(expected_violation)
Example #11
0
    def test_can_get_blacklist_domains(self):
        key = KeyFactory.create(name='blacklist.domains')

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(
                    key=key,
                    value=[
                        'http://www.blacklist-domain-%d.com/' % i,
                        'http://blacklist-domain-%d.com/' % i
                    ])
                ViolationFactory.create(
                    key=key, value=['http://www.blacklist-domain-%d.com/' % i])

        self.db.flush()

        self.server.application.violation_definitions = {
            'blacklist.domains': {
                'title': 'title',
                'category': 'category',
                'generic_description': '',
                'key': key
            }
        }

        response = yield self.authenticated_fetch(
            '/violation/blacklist.domains/domains')
        expect(response.code).to_equal(200)

        violation = loads(response.body)
        expect(violation['details']).to_length(3)
        expect(violation['details']).to_be_like([{
            'count':
            9,
            'domain':
            'blacklist-domain-2.com'
        }, {
            'count':
            6,
            'domain':
            'blacklist-domain-1.com'
        }, {
            'count':
            3,
            'domain':
            'blacklist-domain-0.com'
        }])
Example #12
0
    def test_can_get_group_by_value_for_key(self):
        self.db.query(Key).delete()
        self.db.query(Violation).delete()
        keys = [KeyFactory.create(name="random.key.%s" % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(key=keys[i], value="random.value.%d" % i)

        violations = Violation.get_group_by_value_for_key(self.db, keys[0].name)
        expect(violations).to_be_like([("random.value.0", 1)])

        violations = Violation.get_group_by_value_for_key(self.db, keys[1].name)
        expect(violations).to_be_like([("random.value.1", 2)])

        violations = Violation.get_group_by_value_for_key(self.db, keys[2].name)
        expect(violations).to_be_like([("random.value.2", 3)])
Example #13
0
    def test_can_create_violation(self):
        violation = ViolationFactory.create(key=Key(name="some.random.fact"), value="value", points=1203)

        loaded_violation = self.db.query(Violation).get(violation.id)

        expect(loaded_violation.value).to_equal("value")
        expect(loaded_violation.key.name).to_equal("some.random.fact")
        expect(loaded_violation.points).to_equal(1203)
        expect(str(loaded_violation)).to_be_like("%s: %s" % (violation.key.name, violation.value))
Example #14
0
    def test_can_get_by_key_name_domains(self):
        domains = [DomainFactory.create(name='g%d.com' % i) for i in range(2)]
        keys = [KeyFactory.create(name='random.fact.%s' % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(
                    key=keys[i],
                    domain=domains[j % 2]
                )

        self.db.flush()

        self.server.application.violation_definitions = {
            'random.fact.%s' % i: {
                'title': 'SEO',
                'category': 'SEO',
                'generic_description': 'Desc',
                'key': keys[i]
            } for i in range(3)
        }

        response = yield self.authenticated_fetch(
            '/violation/%s/domains' % keys[2].name
        )

        violation = loads(response.body)

        expected_violation = {
            'domains': [
                {'name': 'g0.com', 'count': 2},
                {'name': 'g1.com', 'count': 1}
            ],
            'total': 3,
            'title': 'SEO',
            'category': 'SEO',
            'description': 'Desc'
        }

        expect(response.code).to_equal(200)
        expect(violation).to_length(5)
        expect(violation['domains']).to_length(2)
        expect(violation).to_be_like(expected_violation)
    def test_can_get_group_by_value_for_key(self):
        self.db.query(Key).delete()
        self.db.query(Violation).delete()
        keys = [KeyFactory.create(name='random.key.%s' % i) for i in range(3)]

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(
                    key=keys[i],
                    value='random.value.%d' % i
                )

        violations = Violation.get_group_by_value_for_key(self.db, keys[0].name)
        expect(violations).to_be_like([('random.value.0', 1)])

        violations = Violation.get_group_by_value_for_key(self.db, keys[1].name)
        expect(violations).to_be_like([('random.value.1', 2)])

        violations = Violation.get_group_by_value_for_key(self.db, keys[2].name)
        expect(violations).to_be_like([('random.value.2', 3)])
Example #16
0
    def test_can_get_blacklist_domains(self):
        key = KeyFactory.create(name='blacklist.domains')

        for i in range(3):
            for j in range(i + 1):
                ViolationFactory.create(
                    key=key,
                    value=[
                        'http://www.blacklist-domain-%d.com/' % i,
                        'http://blacklist-domain-%d.com/' % i
                    ]
                )
                ViolationFactory.create(
                    key=key,
                    value=['http://www.blacklist-domain-%d.com/' % i]
                )

        self.db.flush()

        self.server.application.violation_definitions = {
            'blacklist.domains': {
                'title': 'title',
                'category': 'category',
                'generic_description': '',
                'key': key
            }
        }

        response = yield self.authenticated_fetch(
            '/violation/blacklist.domains/domains'
        )
        expect(response.code).to_equal(200)

        violation = loads(response.body)
        expect(violation['details']).to_length(3)
        expect(violation['details']).to_be_like([
            {'count': 9, 'domain': 'blacklist-domain-2.com'},
            {'count': 6, 'domain': 'blacklist-domain-1.com'},
            {'count': 3, 'domain': 'blacklist-domain-0.com'}
        ])
    def test_can_create_violation(self):
        violation = ViolationFactory.create(
            key=Key(name='some.random.fact'), value='value', points=1203
        )

        loaded_violation = self.db.query(Violation).get(violation.id)

        expect(loaded_violation.value).to_equal('value')
        expect(loaded_violation.key.name).to_equal('some.random.fact')
        expect(loaded_violation.points).to_equal(1203)
        expect(str(loaded_violation)).to_be_like('%s: %s' % (
            violation.key.name,
            violation.value,
        ))
Example #18
0
    def test_to_dict(self):
        violation = ViolationFactory.create(key=Key(name="some.random.fact"), value="value", points=1203)

        violations_definitions = {"some.random.fact": {}}

        expect(violation.to_dict(violations_definitions, _)).to_be_like(
            {
                "key": "some.random.fact",
                "description": "value",
                "title": "undefined",
                "points": 1203,
                "category": "undefined",
            }
        )
Example #19
0
    def test_can_create_violation(self):
        violation = ViolationFactory.create(key=Key(name='some.random.fact'),
                                            value='value',
                                            points=1203)

        loaded_violation = self.db.query(Violation).get(violation.id)

        expect(loaded_violation.value).to_equal('value')
        expect(loaded_violation.key.name).to_equal('some.random.fact')
        expect(loaded_violation.points).to_equal(1203)
        expect(str(loaded_violation)).to_be_like('%s: %s' % (
            violation.key.name,
            violation.value,
        ))
    def test_to_dict(self):
        violation = ViolationFactory.create(
            key=Key(name='some.random.fact'),
            value='value',
            points=1203,
        )

        violations_definitions = {'some.random.fact': {}}

        expect(violation.to_dict(violations_definitions, _)).to_be_like({
            'key': 'some.random.fact',
            'description': 'value',
            'title': 'undefined',
            'points': 1203,
            'category': 'undefined'
        })
    def test_to_dict(self):
        violation = ViolationFactory.create(
            key=Key(name='some.random.fact'),
            value='value',
            points=1203,
        )

        violations_definitions = {'some.random.fact': {}}

        expect(violation.to_dict(violations_definitions, _)).to_be_like({
            'key': 'some.random.fact',
            'description': 'value',
            'title': 'undefined',
            'points': 1203,
            'category': 'undefined'
        })
    def test_to_dict_with_violations_definitions_params(self):
        violation1 = ViolationFactory.create(
            key=Key(name='some.random.fact.1'),
            value='value',
            points=120,
        )

        violation2 = ViolationFactory.create(
            key=Key(name='some.random.fact.2'),
            value='violations',
            points=500,
        )

        violation3 = ViolationFactory.create(
            key=Key(name='some.random.fact.3'),
            value={'page_url': 'http://globo.com'},
            points=300,
        )

        violation4 = ViolationFactory.create(
            key=Key(name='some.random.fact.4'),
            value=None,
            points=100,
        )

        violations_definitions = {
            'some.random.fact.1': {'description': 'test'},
            'some.random.fact.2': {'description': 'test for: %s'},
            'some.random.fact.3': {'description': 'url: %(page_url)s'},
            'some.random.fact.4': {'description': 'my description'},
        }

        expect(violation1.to_dict(violations_definitions, _)).to_be_like({
            'key': 'some.random.fact.1',
            'description': 'test',
            'title': 'undefined',
            'points': 120,
            'category': 'undefined'
        })

        expect(violation2.to_dict(violations_definitions, _)).to_be_like({
            'key': 'some.random.fact.2',
            'description': 'test for: violations',
            'title': 'undefined',
            'points': 500,
            'category': 'undefined'
        })

        expect(violation3.to_dict(violations_definitions, _)).to_be_like({
            'key': 'some.random.fact.3',
            'description': 'url: http://globo.com',
            'title': 'undefined',
            'points': 300,
            'category': 'undefined'
        })

        expect(violation4.to_dict(violations_definitions, _)).to_be_like({
            'key': 'some.random.fact.4',
            'description': 'my description',
            'title': 'undefined',
            'points': 100,
            'category': 'undefined'
        })
Example #23
0
    def test_to_dict_with_violations_definitions_params(self):
        violation1 = ViolationFactory.create(
            key=Key(name='some.random.fact.1'),
            value='value',
            points=120,
        )

        violation2 = ViolationFactory.create(
            key=Key(name='some.random.fact.2'),
            value='violations',
            points=500,
        )

        violation3 = ViolationFactory.create(
            key=Key(name='some.random.fact.3'),
            value={'page_url': 'http://globo.com'},
            points=300,
        )

        violation4 = ViolationFactory.create(
            key=Key(name='some.random.fact.4'),
            value=None,
            points=100,
        )

        violations_definitions = {
            'some.random.fact.1': {
                'description': 'test'
            },
            'some.random.fact.2': {
                'description': 'test for: %s'
            },
            'some.random.fact.3': {
                'description': 'url: %(page_url)s'
            },
            'some.random.fact.4': {
                'description': 'my description'
            },
        }

        expect(violation1.to_dict(violations_definitions, _)).to_be_like({
            'key':
            'some.random.fact.1',
            'description':
            'test',
            'title':
            'undefined',
            'points':
            120,
            'category':
            'undefined'
        })

        expect(violation2.to_dict(violations_definitions, _)).to_be_like({
            'key':
            'some.random.fact.2',
            'description':
            'test for: violations',
            'title':
            'undefined',
            'points':
            500,
            'category':
            'undefined'
        })

        expect(violation3.to_dict(violations_definitions, _)).to_be_like({
            'key':
            'some.random.fact.3',
            'description':
            'url: http://globo.com',
            'title':
            'undefined',
            'points':
            300,
            'category':
            'undefined'
        })

        expect(violation4.to_dict(violations_definitions, _)).to_be_like({
            'key':
            'some.random.fact.4',
            'description':
            'my description',
            'title':
            'undefined',
            'points':
            100,
            'category':
            'undefined'
        })