Add support for tests that use django.test.Client and that require a database, and use this support to test some of the wellknowns.views modules

This commit is contained in:
Danielle McLean 2018-02-06 16:12:36 +11:00
parent 380afe9831
commit cbc24d4774
Signed by: 00dani
GPG key ID: 5A5D2D1AFF12EEC5
6 changed files with 44 additions and 1 deletions

View file

@ -0,0 +1,4 @@
from .base import *
ALLOWED_HOSTS = ['*']
SECURE_SSL_REDIRECT = False

View file

@ -1,3 +1,3 @@
[pytest] [pytest]
DJANGO_SETTINGS_MODULE = lemoncurry.settings.dev DJANGO_SETTINGS_MODULE = lemoncurry.settings.test
python_files = tests/*.py python_files = tests/*.py

View file

View file

View file

@ -0,0 +1,26 @@
import json
from lxml import etree
import pytest
@pytest.mark.django_db
def test_host_meta_json(client):
res = client.get('/.well-known/host-meta.json')
assert res.status_code == 200
assert res['Content-Type'] == 'application/json'
meta = json.loads(res.content)
assert meta.keys() == {'links', 'subject'}
assert meta['subject'] == 'https://example.com'
assert len(meta['links']) == 13
@pytest.mark.django_db
def test_host_meta_xml(client):
res = client.get('/.well-known/host-meta')
assert res.status_code == 200
assert res['Content-Type'] == 'application/xrd+xml'
root = etree.XML(res.content)
ns = '{http://docs.oasis-open.org/ns/xri/xrd-1.0}'
assert root.tag == (ns + 'XRD')
assert root.findtext(ns + 'Subject') == 'https://example.com'
assert len(root.findall(ns + 'Link')) == 13

View file

@ -0,0 +1,13 @@
from ...views import static
def test_redirect_to_static(rf):
res = static.redirect_to_static('abcd')(rf.get('/'))
assert res.status_code == 302
assert res.url == '/static/wellknowns/abcd'
def test_keybase(rf):
res = static.keybase(rf.get('/.well-knowns/keybase.txt'))
assert res.status_code == 302
assert res.url == '/static/wellknowns/keybase.txt'