Port releng tests to pytest
This commit is contained in:
parent
f8a5ec056e
commit
c9e108502e
@ -1,6 +1,7 @@
|
||||
from base64 import b64decode
|
||||
from bencode import bdecode, bencode
|
||||
from datetime import datetime
|
||||
import binascii
|
||||
import hashlib
|
||||
from pytz import utc
|
||||
|
||||
@ -59,7 +60,7 @@ def info_html(self):
|
||||
def torrent(self):
|
||||
try:
|
||||
data = b64decode(self.torrent_data.encode('utf-8'))
|
||||
except TypeError:
|
||||
except (TypeError, binascii.Error):
|
||||
return None
|
||||
if not data:
|
||||
return None
|
||||
|
34
releng/tests/conftest.py
Normal file
34
releng/tests/conftest.py
Normal file
@ -0,0 +1,34 @@
|
||||
from datetime import datetime
|
||||
from base64 import b64encode
|
||||
from bencode import bencode
|
||||
|
||||
import pytest
|
||||
|
||||
from releng.models import Release
|
||||
|
||||
|
||||
VERSION = '1.0'
|
||||
KERNEL_VERSION = '4.18'
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def release(db):
|
||||
release = Release.objects.create(release_date=datetime.now(),
|
||||
version=VERSION,
|
||||
kernel_version=KERNEL_VERSION)
|
||||
yield release
|
||||
release.delete()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def torrent_data():
|
||||
data = {
|
||||
'comment': 'comment',
|
||||
'created_by': 'Arch Linux',
|
||||
'creation date': int(datetime.utcnow().timestamp()),
|
||||
'info': {
|
||||
'name': 'arch.iso',
|
||||
'length': 1,
|
||||
}
|
||||
}
|
||||
return b64encode(bencode(data)).decode()
|
@ -1,34 +1,50 @@
|
||||
from django.test import TestCase
|
||||
|
||||
from releng.models import Release
|
||||
def test_feed(client, release):
|
||||
response = client.get('/feeds/releases/')
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
class RelengTest(TestCase):
|
||||
fixtures = ['releng/fixtures/release.json']
|
||||
def test_str(release):
|
||||
assert str(release) == release.version
|
||||
|
||||
def setUp(self):
|
||||
self.release = Release.objects.first()
|
||||
|
||||
def test_feed(self):
|
||||
response = self.client.get('/feeds/releases/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
def test_absolute_url(release):
|
||||
assert release.version, release.get_absolute_url()
|
||||
|
||||
def test_absolute_url(self):
|
||||
self.assertIn(self.release.version, self.release.get_absolute_url())
|
||||
|
||||
def test_iso_url(self):
|
||||
url = self.release.iso_url()
|
||||
ver = self.release.version
|
||||
expected = 'iso/{}/archlinux-{}-x86_64.iso'.format(ver, ver)
|
||||
self.assertEqual(url, expected)
|
||||
def test_iso_url(release):
|
||||
url = release.iso_url()
|
||||
ver = release.version
|
||||
expected = 'iso/{}/archlinux-{}-x86_64.iso'.format(ver, ver)
|
||||
assert url == expected
|
||||
|
||||
def test_info_html(self):
|
||||
self.assertIn(self.release.info, self.release.info_html())
|
||||
|
||||
def test_dir_path(self):
|
||||
dir_path = u'iso/{}/'.format(self.release.version)
|
||||
self.assertEqual(dir_path, self.release.dir_path())
|
||||
def test_info_html(release):
|
||||
assert release.info in release.info_html()
|
||||
|
||||
def test_sitemap(self):
|
||||
response = self.client.get('/sitemap-releases.xml')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_dir_path(release):
|
||||
dir_path = u'iso/{}/'.format(release.version)
|
||||
assert dir_path == release.dir_path()
|
||||
|
||||
|
||||
def test_sitemap(client, release):
|
||||
response = client.get('/sitemap-releases.xml')
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_garbage_torrent_data(release):
|
||||
assert release.torrent() is None
|
||||
|
||||
release.torrent_data = 'garbage'
|
||||
assert release.torrent() is None
|
||||
|
||||
|
||||
def test_torrent_data(release, torrent_data):
|
||||
release.torrent_data = torrent_data
|
||||
data = release.torrent()
|
||||
assert 'arch' in data['file_name']
|
||||
|
||||
|
||||
def test_magnet_uri(release, torrent_data):
|
||||
release.torrent_data = torrent_data
|
||||
assert release.magnet_uri()
|
||||
|
@ -1,40 +1,49 @@
|
||||
from django.test import TestCase
|
||||
def test_release_json(client, release, torrent_data):
|
||||
version = release.version
|
||||
response = client.get('/releng/releases/json/')
|
||||
assert response.status_code == 200
|
||||
|
||||
from releng.models import Release
|
||||
data = response.json()
|
||||
assert data['version'] == 1
|
||||
release_data = data['releases'][0]
|
||||
assert release_data['version'] == version
|
||||
|
||||
# Test with torrent data
|
||||
release.torrent_data = torrent_data
|
||||
release.save()
|
||||
response = client.get('/releng/releases/json/')
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
class RelengViewTest(TestCase):
|
||||
fixtures = ['releng/fixtures/release.json']
|
||||
def test_json(db, client):
|
||||
response = client.get('/releng/releases/json/')
|
||||
assert response.status_code == 200
|
||||
|
||||
def setUp(self):
|
||||
self.release = Release.objects.first()
|
||||
data = response.json()
|
||||
assert data['releases'] == []
|
||||
|
||||
def test_release_json(self):
|
||||
version = self.release.version
|
||||
response = self.client.get('/releng/releases/json/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
data = response.json()
|
||||
|
||||
self.assertEqual(data['version'], 1)
|
||||
release = data['releases'][0]
|
||||
self.assertEqual(release['version'], version)
|
||||
def test_netboot_page(db, client):
|
||||
response = client.get('/releng/netboot/')
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_netboot_page(self):
|
||||
response = self.client.get('/releng/netboot/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_netboot_config(self):
|
||||
response = self.client.get('/releng/netboot/archlinux.ipxe')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
def test_netboot_config(db, client):
|
||||
response = client.get('/releng/netboot/archlinux.ipxe')
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_release_torrent_not_found(self):
|
||||
# TODO: Add torrent data to release fixture
|
||||
version = self.release.version
|
||||
response = self.client.get('/releng/releases/{}/torrent/'.format(version))
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_release_details(self):
|
||||
version = self.release.version
|
||||
response = self.client.get('/releng/releases/{}/'.format(version))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn(version, response.content.decode('utf-8'))
|
||||
def test_release_torrent(client, release, torrent_data):
|
||||
response = client.get('/releng/releases/{}/torrent/'.format(release.version))
|
||||
assert response.status_code == 404
|
||||
|
||||
release.torrent_data = torrent_data
|
||||
release.save()
|
||||
response = client.get('/releng/releases/{}/torrent/'.format(release.version))
|
||||
assert response.status_code == 200
|
||||
|
||||
|
||||
def test_release_details(client, release):
|
||||
response = client.get('/releng/releases/{}/'.format(release.version))
|
||||
assert response.status_code == 200
|
||||
assert release.version in response.content.decode()
|
||||
|
Loading…
Reference in New Issue
Block a user