Example #1
0
    def test_can_get_default_violations_values(self):
        config = Config()
        config.METATAG_DESCRIPTION_MAX_SIZE = 300

        page = PageFactory.create()

        reviewer = Reviewer(
            api_url='http://localhost:2368',
            page_uuid=page.uuid,
            page_url=page.url,
            page_score=0.0,
            config=config,
            validators=[]
        )

        validator = MetaTagsValidator(reviewer)

        violations_values = validator.get_default_violations_values(config)

        expect(violations_values).to_include('page.metatags.description_too_big')

        expect(violations_values['page.metatags.description_too_big']).to_length(2)

        expect(violations_values['page.metatags.description_too_big']).to_be_like({
            'value': config.METATAG_DESCRIPTION_MAX_SIZE,
            'description': config.get_description('METATAG_DESCRIPTION_MAX_SIZE')
        })
Example #2
0
    def test_can_get_violation_definitions(self):
        reviewer = Mock()
        validator = MetaTagsValidator(reviewer)
        definitions = validator.get_violation_definitions()

        expect(definitions).to_length(1)
        expect('absent.metatags' in definitions).to_be_true()
Example #3
0
    def test_can_validate_page_without_meta_tags(self):
        config = Config()

        page = PageFactory.create()

        reviewer = Reviewer(
            api_url='http://localhost:2368',
            page_uuid=page.uuid,
            page_url=page.url,
            page_score=0.0,
            config=config,
            validators=[]
        )

        content = '<html></html>'

        result = {
            'url': page.url,
            'status': 200,
            'content': content,
            'html': lxml.html.fromstring(content)
        }
        reviewer.responses[page.url] = result
        reviewer.get_response = Mock(return_value=result)

        validator = MetaTagsValidator(reviewer)
        validator.add_fact = Mock()
        validator.add_violation = Mock()
        validator.validate()

        validator.add_violation.assert_called_once_with(
            key='absent.metatags',
            value='No metatags.',
            points=100
        )
Example #4
0
    def test_can_get_violation_definitions(self):
        reviewer = Mock()
        validator = MetaTagsValidator(reviewer)
        definitions = validator.get_violation_definitions()

        expect(definitions).to_length(2)
        expect('absent.metatags' in definitions).to_be_true()
        expect('page.metatags.description_too_big' in definitions).to_be_true()
Example #5
0
    def test_can_validate_page_with_metatag_description_too_long(self):
        page = PageFactory.create()
        reviewer = Reviewer(
            api_url='http://localhost:2368',
            page_uuid=page.uuid,
            page_url=page.url,
            page_score=0.0,
            config=Config(),
            validators=[],
            cache=self.sync_cache
        )

        reviewer.violation_definitions = {
            'page.metatags.description_too_big': {'default_value': 300},
        }

        validator = MetaTagsValidator(reviewer)

        validator.add_violation = Mock()
        validator.review.data['meta.tags'] = [
            {'content': 'X' * 301, 'property': 'name', 'key': 'description'},
        ]
        validator.validate()
        validator.add_violation.assert_called_once_with(
            key='page.metatags.description_too_big',
            value={'max_size': 300},
            points=20
        )

        validator.add_violation = Mock()
        validator.review.data['meta.tags'] = [
            {'content': 'X' * 300, 'property': 'name', 'key': 'description'},
        ]
        validator.validate()
        expect(validator.add_violation.called).to_be_false()
Example #6
0
 def test_can_validate_pages_with_metatags(self):
     page = PageFactory.create()
     reviewer = Reviewer(
         api_url='http://localhost:2368',
         page_uuid=page.uuid,
         page_url=page.url,
         page_score=0.0,
         config=Config(),
         validators=[]
     )
     validator = MetaTagsValidator(reviewer)
     validator.add_violation = Mock()
     validator.review.data['meta.tags'] = [
         {'content': 'utf-8', 'property': None, 'key': 'charset'},
         {'content': 'text/html;charset=UTF-8', 'property': 'http-equiv', 'key': 'Content-Type'},
     ]
     validator.validate()
     expect(validator.add_violation.called).to_be_false()
Example #7
0
    def test_can_validate_page_without_meta_tags(self):
        page = PageFactory.create()
        reviewer = Reviewer(
            api_url='http://localhost:2368',
            page_uuid=page.uuid,
            page_url=page.url,
            page_score=0.0,
            config=Config(),
            validators=[]
        )
        validator = MetaTagsValidator(reviewer)
        validator.add_violation = Mock()
        validator.review.data['meta.tags'] = []
        validator.validate()

        validator.add_violation.assert_called_once_with(
            key='absent.metatags',
            value='No metatags.',
            points=100
        )