petale/tests/conftest.py

91 lines
2.9 KiB
Python

from __future__ import unicode_literals
from tempfile import mkdtemp
import shutil
import pytest
import django_webtest
from utils import (create_partner, create_petal, create_service, create_cut,
get_service, create_acl_record, get_tests_file_content)
@pytest.fixture
def app(request, settings):
wtm = django_webtest.WebTestMixin()
wtm._patch_settings()
request.addfinalizer(wtm._unpatch_settings)
settings.MEDIA_ROOT = mkdtemp()
def fin():
shutil.rmtree(settings.MEDIA_ROOT)
request.addfinalizer(fin)
return django_webtest.DjangoTestApp()
@pytest.fixture
def cut_kevin_uuid(db):
return create_cut('a' * 255).uuid
@pytest.fixture
def service_library(db):
return create_service('library')
@pytest.fixture
def service_family(db):
return create_service('family')
@pytest.fixture
def service_cityhall(db):
return create_service('cityhall')
@pytest.fixture
def service_rp(db):
return create_service(('a1b2' * 8)[:30], password='wrong credentials')
@pytest.fixture
def partner_southpark(service_family, service_library, service_cityhall, service_rp):
return create_partner('southpark', hg=20240, hk=19728)
@pytest.fixture
def partner_gotham():
create_service('arkham')
return create_partner('gotham', admins='b.wayne@gotham.gov', hg=20, sg=10, hk=2, sk=1)
@pytest.fixture
def acl(db, partner_southpark, partner_gotham):
return [
create_acl_record(1, partner_southpark, get_service('family'), 'invoice', methods='GET,HEAD,PUT'),
create_acl_record(2, partner_southpark, get_service('library'), 'books', methods='GET,HEAD'),
create_acl_record(3, partner_gotham, get_service('arkham'), 'taxes*', methods='GET,HEAD,PUT,DELETE'),
create_acl_record(4, partner_southpark, get_service('library'), 'loans', methods='GET,HEAD,PUT,DELETE'),
create_acl_record(5, partner_southpark, get_service('library'), 'favourite*', methods='GET,PUT'),
create_acl_record(6, partner_southpark, get_service('cityhall'), 'favourite*', methods='GET,PUT,DELETE'),
create_acl_record(3, partner_southpark, get_service('library'), 'profile', methods='GET,PUT,DELETE'),
create_acl_record(1, partner_southpark, get_service('arkham'), 'ma*', methods='GET,HEAD,PUT,DELETE'),
create_acl_record(4, partner_southpark, get_service(('a1b2' * 8)[:30]), 'profile*', methods='GET,PUT')
]
@pytest.fixture
def petal_books(db, cut_kevin_uuid, partner_southpark):
name = 'books'
content_type = 'application/json'
data = b'{"books": [{"1984": "U all doomed"}, {"Candide": "Another naive boy"}]}'
return create_petal(cut_kevin_uuid, partner_southpark, name, data, content_type)
@pytest.fixture
def petal_invoice(db, cut_kevin_uuid, partner_southpark):
name = 'invoice-20170220'
content_type = 'application/pdf'
data = get_tests_file_content('invoice.pdf')
return create_petal(cut_kevin_uuid, partner_southpark, name, data, content_type)