Пример #1
0
    def test_validate(self):
        validate_json = self.load_payload('validate_json')
        del validate_json['dependencies']
        result = v.validate(
            self.factory.post('/yangvalidator/v2/validate',
                              validate_json,
                              content_type='application/json'), 'test')

        self.assertEqual(result.status_code, 200)
        parsers = ['confd', 'pyang', 'yangdump-pro', 'yanglint']
        data = json.loads(result.content)
        self.assertIn('output', data)
        self.assertIn('*****@*****.**', data['output'])
        self.assertEqual(data['output']['xym'], 'test')
        self.assertEqual(
            data['output']['*****@*****.**'].get('confd'),
            'test')
        self.assertEqual(
            data['output']['*****@*****.**'].get(
                'yangdump-pro'), 'test')
        self.assertEqual(
            data['output']['*****@*****.**'].get(
                'pyang', {}).get('code'), 0)
        self.assertEqual(
            data['output']['*****@*****.**'].get(
                'yanglint', {}).get('code'), 0)
Пример #2
0
    def test_validate_invalid_method(self):
        result = v.validate(self.factory.get('/yangvalidator/v2/validate'))

        self.assertEqual(result.status_code, 405)
        self.assertJSONEqual(
            result.content,
            {'Error': 'Only POST request allowed but GET found'})
Пример #3
0
    def test_validate_no_user_or_repo_modules(self):
        result = v.validate(
            mock.MagicMock(method='POST',
                           body=json.dumps(
                               {'modules-to-validate': {
                                   'test': 'test'
                               }})))
        result = v.validate(
            self.factory.post('/yangvalidator/v2/validate',
                              {'modules-to-validate': {
                                  'test': 'test'
                              }},
                              content_type='application/json'))

        self.assertEqual(result.status_code, 400)
        self.assertJSONEqual(result.content,
                             {'Error': 'No module received for validation'})
Пример #4
0
    def test_validate_no_module(self):
        result = v.validate(
            self.factory.post('/yangvalidator/v2/validate', {'test': 'test'},
                              content_type='application/json'))

        self.assertEqual(result.status_code, 400)
        self.assertJSONEqual(result.content,
                             {'Error': 'No module received for validation'})
Пример #5
0
    def test_validate_not_json(self):
        result = v.validate(self.factory.post('/yangvalidator/v2/validate'))

        self.assertEqual(result.status_code, 400)
        try:
            json.loads('not json')
        except ValueError as e:
            self.assertJSONEqual(
                result.content, {'Error': 'Not a json content - {}'.format(e)})
Пример #6
0
    def test_validate_skip(self):
        validate_json = self.load_payload('validate_json')
        result = v.validate(
            self.factory.post('/yangvalidator/v2/validate',
                              validate_json,
                              content_type='application/json'))

        self.assertEqual(result.status_code, 200)
        warning = 'Following modules [email protected] were skipped from validation because you chose' \
                  ' different repo modules as a dependency with same name'
        self.assertJSONEqual(result.content, {'output': {'warning': warning}})
Пример #7
0
    def test_validate_error(self):
        validate_json = self.load_payload('validate_json')
        result = v.validate(
            self.factory.post('/yangvalidator/v2/validate',
                              validate_json,
                              content_type='application/json'))

        self.assertEqual(result.status_code, 200)
        self.assertJSONEqual(
            result.content,
            {'output': {
                'error': 'Failed to parse a document - test'
            }})