Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions releng/fixtures/release.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"info": "public information",
"kernel_version": "4.12",
"last_modified": "2017-06-11T16:53:53.723Z",
"pgp_key": "0x3E80CA1A8B89F69CBA57D98A76A5EF9054449A5C",
"md5_sum": "f029d6004e63464b1b26c62058c4e37e",
"release_date": "2017-06-11",
"wkd_email": "pierre@archlinux.de",
Expand Down
14 changes: 11 additions & 3 deletions releng/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,20 @@
VERSION = '1.0'
KERNEL_VERSION = '4.18'

# Sample signing identity; same values as releng/fixtures/release.json (PGPKeyField stores 40 hex digits).
PGP_KEY_FINGERPRINT = '3E80CA1A8B89F69CBA57D98A76A5EF9054449A5C'
WKD_EMAIL = 'pierre@archlinux.de'


@pytest.fixture
def release(db):
release = Release.objects.create(release_date=datetime.now(),
version=VERSION,
kernel_version=KERNEL_VERSION)
release = Release.objects.create(
release_date=datetime.now(),
version=VERSION,
kernel_version=KERNEL_VERSION,
pgp_key=PGP_KEY_FINGERPRINT,
wkd_email=WKD_EMAIL,
)
yield release
release.delete()

Expand Down
22 changes: 22 additions & 0 deletions releng/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,17 @@ def test_release_json(client, release, torrent_data):
assert data['version'] == 1
release_data = data['releases'][0]
assert release_data['version'] == version
assert release_data['pgp_fingerprint'] == release.pgp_key
assert release_data['wkd_email'] == release.wkd_email

# Test with torrent data
release.torrent_data = torrent_data
release.save()
response = client.get('/releng/releases/json/')
assert response.status_code == 200
release_data = response.json()['releases'][0]
assert release_data['pgp_fingerprint'] == release.pgp_key
assert release_data['wkd_email'] == release.wkd_email


def test_json(db, client):
Expand All @@ -23,6 +28,23 @@ def test_json(db, client):
assert data['releases'] == []


def test_release_json_null_pgp_fingerprint_and_wkd_email(client, db):
from datetime import datetime

from releng.models import Release

Release.objects.create(
release_date=datetime.now(),
version='9.9.9',
kernel_version='1.0',
)
response = client.get('/releng/releases/json/')
assert response.status_code == 200
release_data = response.json()['releases'][0]
assert release_data['pgp_fingerprint'] is None
assert release_data['wkd_email'] is None


def test_netboot_page(db, client):
response = client.get('/releng/netboot/')
assert response.status_code == 200
Expand Down
4 changes: 3 additions & 1 deletion releng/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,14 @@ def release_torrent(request, version):

class ReleaseJSONEncoder(DjangoJSONEncoder):
release_attributes = ('release_date', 'version', 'kernel_version',
'created', 'md5_sum', 'sha1_sum', 'sha256_sum', 'b2_sum')
'created', 'md5_sum', 'sha1_sum', 'sha256_sum', 'b2_sum',
'wkd_email')

def default(self, obj):
if isinstance(obj, Release):
data = {attr: getattr(obj, attr) or None
for attr in self.release_attributes}
data['pgp_fingerprint'] = obj.pgp_key
data['available'] = obj.available
data['iso_url'] = '/' + obj.iso_url()
data['magnet_uri'] = obj.magnet_uri()
Expand Down
Loading