more api tests, add another user and another host so we can test separation
This commit is contained in:
parent
08d8ce472b
commit
5fb721d112
@ -10,6 +10,8 @@ from django.conf import settings
|
|||||||
BASEDOMAIN = "nsupdate.info"
|
BASEDOMAIN = "nsupdate.info"
|
||||||
TEST_HOST = 'test.' + BASEDOMAIN # unit tests can update this host ONLY
|
TEST_HOST = 'test.' + BASEDOMAIN # unit tests can update this host ONLY
|
||||||
TEST_SECRET = "secret"
|
TEST_SECRET = "secret"
|
||||||
|
TEST_HOST2 = 'test2.' + BASEDOMAIN
|
||||||
|
TEST_SECRET2 = "somethingelse"
|
||||||
NAMESERVER_IP = "85.10.192.104"
|
NAMESERVER_IP = "85.10.192.104"
|
||||||
NAMESERVER_UPDATE_ALGORITHM = "HMAC_SHA512"
|
NAMESERVER_UPDATE_ALGORITHM = "HMAC_SHA512"
|
||||||
# no problem, you can ONLY update the TEST_HOST with this key, nothing else:
|
# no problem, you can ONLY update the TEST_HOST with this key, nothing else:
|
||||||
@ -17,6 +19,7 @@ NAMESERVER_UPDATE_KEY = "YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF
|
|||||||
NAMESERVER_PUBLIC = True
|
NAMESERVER_PUBLIC = True
|
||||||
|
|
||||||
USERNAME = 'test'
|
USERNAME = 'test'
|
||||||
|
USERNAME2 = 'test2'
|
||||||
PASSWORD = 'pass'
|
PASSWORD = 'pass'
|
||||||
|
|
||||||
from django.utils.translation import activate
|
from django.utils.translation import activate
|
||||||
@ -33,6 +36,8 @@ def db_init(db): # note: db is a predefined fixture and required here to have t
|
|||||||
# create a fresh test user
|
# create a fresh test user
|
||||||
u = User.objects.create_user(USERNAME, settings.DEFAULT_FROM_EMAIL, PASSWORD)
|
u = User.objects.create_user(USERNAME, settings.DEFAULT_FROM_EMAIL, PASSWORD)
|
||||||
u.save()
|
u.save()
|
||||||
|
u2 = User.objects.create_user(USERNAME2, 'test@example.org', PASSWORD)
|
||||||
|
u2.save()
|
||||||
# this is for updating:
|
# this is for updating:
|
||||||
Domain.objects.create(
|
Domain.objects.create(
|
||||||
domain=TEST_HOST, # special: single-host update secret!
|
domain=TEST_HOST, # special: single-host update secret!
|
||||||
@ -52,6 +57,8 @@ def db_init(db): # note: db is a predefined fixture and required here to have t
|
|||||||
# a Host for api / session update tests
|
# a Host for api / session update tests
|
||||||
h = Host(subdomain='test', domain=d, created_by=u)
|
h = Host(subdomain='test', domain=d, created_by=u)
|
||||||
h.generate_secret(secret=TEST_SECRET)
|
h.generate_secret(secret=TEST_SECRET)
|
||||||
|
h = Host(subdomain='test2', domain=d, created_by=u2)
|
||||||
|
h.generate_secret(secret=TEST_SECRET2)
|
||||||
|
|
||||||
|
|
||||||
def pytest_runtest_setup(item):
|
def pytest_runtest_setup(item):
|
||||||
|
@ -8,6 +8,7 @@ from django.core.urlresolvers import reverse
|
|||||||
|
|
||||||
|
|
||||||
TEST_HOST = "test.nsupdate.info"
|
TEST_HOST = "test.nsupdate.info"
|
||||||
|
TEST_HOST2 = "test2.nsupdate.info"
|
||||||
TEST_SECRET = "secret"
|
TEST_SECRET = "secret"
|
||||||
|
|
||||||
USERNAME = 'test'
|
USERNAME = 'test'
|
||||||
@ -38,6 +39,22 @@ def test_nic_update_badauth(client):
|
|||||||
assert response.content == "badauth"
|
assert response.content == "badauth"
|
||||||
|
|
||||||
|
|
||||||
|
def test_nic_update_authorized_nonexistent_host(client):
|
||||||
|
response = client.get(reverse('nic_update') + '?hostname=nonexistent.nsupdate.info',
|
||||||
|
HTTP_AUTHORIZATION=make_basic_auth_header(TEST_HOST, TEST_SECRET))
|
||||||
|
assert response.status_code == 200
|
||||||
|
# we must not get this updated, it doesn't exist in the database:
|
||||||
|
assert response.content == 'nohost'
|
||||||
|
|
||||||
|
|
||||||
|
def test_nic_update_authorized_foreign_host(client):
|
||||||
|
response = client.get(reverse('nic_update') + '?hostname=%s' % TEST_HOST2,
|
||||||
|
HTTP_AUTHORIZATION=make_basic_auth_header(TEST_HOST, TEST_SECRET))
|
||||||
|
assert response.status_code == 200
|
||||||
|
# we must not get this updated, this is a host of some other user!
|
||||||
|
assert response.content == 'nohost'
|
||||||
|
|
||||||
|
|
||||||
def test_nic_update_authorized(client):
|
def test_nic_update_authorized(client):
|
||||||
response = client.get(reverse('nic_update'),
|
response = client.get(reverse('nic_update'),
|
||||||
HTTP_AUTHORIZATION=make_basic_auth_header(TEST_HOST, TEST_SECRET))
|
HTTP_AUTHORIZATION=make_basic_auth_header(TEST_HOST, TEST_SECRET))
|
||||||
@ -46,6 +63,14 @@ def test_nic_update_authorized(client):
|
|||||||
assert response.content.startswith('good ') or response.content.startswith('nochg ')
|
assert response.content.startswith('good ') or response.content.startswith('nochg ')
|
||||||
|
|
||||||
|
|
||||||
|
def test_nic_update_authorized_myip(client):
|
||||||
|
response = client.get(reverse('nic_update') + '?myip=4.3.2.1',
|
||||||
|
HTTP_AUTHORIZATION=make_basic_auth_header(TEST_HOST, TEST_SECRET))
|
||||||
|
assert response.status_code == 200
|
||||||
|
# we don't care whether it is nochg or good, but should be the ip from myip=...:
|
||||||
|
assert response.content in ['good 4.3.2.1', 'nochg 4.3.2.1']
|
||||||
|
|
||||||
|
|
||||||
def test_nic_update_session_nosession(client):
|
def test_nic_update_session_nosession(client):
|
||||||
response = client.get(reverse('nic_update_authorized'))
|
response = client.get(reverse('nic_update_authorized'))
|
||||||
assert response.status_code == 302 # redirects to login view
|
assert response.status_code == 302 # redirects to login view
|
||||||
@ -61,7 +86,15 @@ def test_nic_update_session(client):
|
|||||||
assert response.content.startswith('good ') or response.content.startswith('nochg ')
|
assert response.content.startswith('good ') or response.content.startswith('nochg ')
|
||||||
|
|
||||||
|
|
||||||
def test_detect_ip(client):
|
def test_nic_update_session_foreign_host(client):
|
||||||
|
client.login(username=USERNAME, password=PASSWORD)
|
||||||
|
response = client.get(reverse('nic_update_authorized') + '?hostname=%s' % TEST_HOST2)
|
||||||
|
assert response.status_code == 200
|
||||||
|
# we must not get this updated, this is a host of some other user!
|
||||||
|
assert response.content == "nohost"
|
||||||
|
|
||||||
|
|
||||||
|
def test_detect_ip_invalid_session(client):
|
||||||
response = client.get(reverse('detectip', args=('invalid_session_id', )))
|
response = client.get(reverse('detectip', args=('invalid_session_id', )))
|
||||||
assert response.status_code == 204
|
assert response.status_code == 204
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user