summaryrefslogtreecommitdiff
path: root/src/test/test_pydrilla.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/test_pydrilla.py')
-rw-r--r--src/test/test_pydrilla.py153
1 files changed, 0 insertions, 153 deletions
diff --git a/src/test/test_pydrilla.py b/src/test/test_pydrilla.py
deleted file mode 100644
index 50757a7..0000000
--- a/src/test/test_pydrilla.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# SPDX-License-Identifier: AGPL-3.0-or-later
-
-# Repository tests
-#
-# This file is part of Hydrilla
-#
-# Copyright (C) 2021 Wojtek Kosior
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#
-# I, Wojtek Kosior, thereby promise not to sue for violation of this
-# file's license. Although I request that you do not make use this code
-# in a proprietary program, I am not going to enforce this in court.
-
-import pytest
-import sys
-import shutil
-from pathlib import Path
-from hashlib import sha256
-from os import mkdir, unlink, environ
-import json
-from markupsafe import escape
-
-from pydrilla import pydrilla, create_app
-
-test_dir = Path(__file__).resolve().parent
-packages_dir = test_dir.parent
-development_config_path = test_dir / 'development_config.json'
-example_content_dir = test_dir / 'example_content'
-
-@pytest.fixture
-def client():
- app = create_app(development_config_path, flask_config={'TESTING': True})
-
- with app.test_client() as client:
- yield client
-
-@pytest.fixture
-def development_config():
- with open(development_config_path) as config_file:
- yield json.loads(pydrilla.strip_json_comments(config_file.read()))
-
-def test_api_basic(client, development_config):
- def verify_sha256sum(source_name, file_object):
- with open(example_content_dir / source_name / file_object['file'],
- mode='rb') as file:
- assert sha256(file.read()).digest().hex() == file_object['sha256']
-
- response = client.get('/')
- assert b'html' in response.data
- sources_uri = development_config['hydrilla_sources_uri']
- assert escape(sources_uri).encode() in response.data
-
- for item_type in ['mapping', 'resource']:
- response = client.get(f'/{item_type}s/helloapple')
- assert response.status_code == 200
- definition = json.loads(response.data.decode())
- assert definition['type'] == item_type
- assert definition['source_name'] == 'hello'
- assert definition['version'] == [2021, 11, 10]
- if item_type == 'resource':
- assert type(definition['scripts']) is list
- assert len(definition['scripts']) > 0
- for script_file in definition['scripts']:
- verify_sha256sum(definition['source_name'], script_file)
-
- response = client.get(f'/{item_type}s/helloapple?ver=2021.11.10.0')
- assert response.status_code == 200
- assert definition == json.loads(response.data.decode())
-
- response = client.get(f'/{item_type}s/helloapple?ver=2021.11.10.999')
- assert response.status_code == 404
-
- response = client.get(f'/{item_type}s/helloapple?ver=random_bad_input')
- assert response.status_code == 400
-
- response = client.get(f'/{item_type}s/random-bad-identifier')
- assert response.status_code == 404
-
- response = client.get(f'/{item_type}s/helloapple?ver=all')
- assert response.status_code == 200
- definitions = json.loads(response.data.decode())
- assert type(definitions) is list
- assert all([d['type'] == item_type for d in definitions])
- assert any([d['version'] == [2021, 11, 10] for d in definitions])
-
- response = client.get('/licenses/CC0-1.0')
- assert response.status_code == 200
- definition = json.loads(response.data.decode())
- assert definition['type'] == 'license'
- assert definition['long_name'] == 'Creative Commons Zero v1.0 Universal'
- assert definition['source_name'] == 'hello'
-
- assert type(definition['legal_text']) is list
- assert len(definition['legal_text']) > 0
- for license_file in definition['legal_text']:
- verify_sha256sum(definition['source_name'], license_file)
-
- response = client.get('/licenses/random-bad-identifier')
- assert response.status_code == 404
-
- response = client.get('/sources/hello')
- assert response.status_code == 200
- definition = json.loads(response.data.decode())
-
- assert definition['source_name'] == 'hello'
- assert type(definition['schema_version']) is list
-
- response = client.get('/sources/random-bad-identifier')
- assert response.status_code == 404
-
- response = client.get('/query?url=https://hachettebugs.koszko.org')
- assert response.status_code == 200
- definitions = json.loads(response.data.decode())
- assert type(definitions) is list
- assert all([d['type'] == 'mapping' for d in definitions])
- assert any([p['pattern'] == 'https://hachettebugs.koszko.org/***'
- for d in definitions for p in d['payloads']])
-
- response = client.get('/query?url=https://random_bad_domain.org/something')
- assert response.status_code == 200
- definitions = json.loads(response.data.decode())
- assert definitions == []
-
- resource_uri = development_config['static_resource_uri']
- response = client.get('/sources/hello/hello.js')
- assert response.status_code == 301
- assert response.location == resource_uri + 'hello/hello.js'
- response = client.get('/sources/random-bad-identifier/hello.js')
- assert response.status_code == 404
- response = client.get('/sources/hello/random/bad/path')
- assert response.status_code == 301
- assert response.location == resource_uri + 'hello/random/bad/path'
-
-def test_normalize_version():
- assert pydrilla.normalize_version([4, 5, 3, 0, 0]) == [4, 5, 3]
- assert pydrilla.normalize_version([1, 0, 5, 0]) == [1, 0, 5]
- assert pydrilla.normalize_version([3, 3]) == [3, 3]
-
-def test_strip_json_comments(development_config):
- assert development_config['static_resource_uri'] == 'http://localhost:8000/'