move the data creation into fixtures
This commit is contained in:
parent
66706c854e
commit
4c761e551a
|
@ -1,8 +1,61 @@
|
|||
import pytest
|
||||
from django.core.management import call_command
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
|
||||
from inventory.models import Customer, Computer
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def django_db_setup(django_db_setup, django_db_blocker):
|
||||
with django_db_blocker.unblock():
|
||||
call_command('loaddata', 'inventory.yaml')
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def make_admin_users():
|
||||
def _make_admin_users(customer_names):
|
||||
admins = {}
|
||||
for name in customer_names:
|
||||
User = get_user_model()
|
||||
username = name.lower() + '_admin'
|
||||
domain = name.lower() + '.com'
|
||||
admins[name] = User.objects.create_user(
|
||||
username,
|
||||
username + '@' + domain,
|
||||
'password',
|
||||
is_staff=True)
|
||||
return admins
|
||||
return _make_admin_users
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def make_customers():
|
||||
def _make_customers(customer_names):
|
||||
customers = {}
|
||||
for name in customer_names:
|
||||
customers[name] = Customer.objects.create(name=name)
|
||||
return customers
|
||||
return _make_customers
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def make_admin_groups():
|
||||
def _make_admin_groups(customer_names):
|
||||
groups = {}
|
||||
for name in customer_names:
|
||||
groups[name] = Group.objects.create(name=name)
|
||||
return groups
|
||||
return _make_admin_groups
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def make_computers():
|
||||
def _make_computers(customer_names):
|
||||
computers = {}
|
||||
for name in customer_names:
|
||||
computers[name] = Computer.objects.create(
|
||||
name=name.lower() + '-pc1',
|
||||
customer=Customer.objects.get(name=name))
|
||||
return computers
|
||||
return _make_computers
|
||||
|
|
|
@ -1,61 +1,30 @@
|
|||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
from django.test import Client
|
||||
from guardian.shortcuts import assign_perm
|
||||
import pytest
|
||||
|
||||
from inventory.models import Customer, Computer
|
||||
|
||||
|
||||
def create_users():
|
||||
User = get_user_model()
|
||||
novartis = User.objects.create_user('novartis_admin',
|
||||
'novartis_admin@novartis.com',
|
||||
'password',
|
||||
is_staff=True)
|
||||
nestle = User.objects.create_user('nestle_admin',
|
||||
'nestle_admin@nestle.com',
|
||||
'password',
|
||||
is_staff=True)
|
||||
return novartis, nestle
|
||||
|
||||
|
||||
def create_groups():
|
||||
novartis_admin_group = Group.objects.create(name='NovartisAdmins')
|
||||
nestle_admin_group = Group.objects.create(name='NestleAdmins')
|
||||
return novartis_admin_group, nestle_admin_group
|
||||
|
||||
|
||||
def create_customers():
|
||||
novartis = Customer.objects.create(name='Novartis')
|
||||
nestle = Customer.objects.create(name='Nestle')
|
||||
return novartis, nestle
|
||||
|
||||
|
||||
def create_computers():
|
||||
Computer.objects.create(name='novartis-pc1',
|
||||
customer=Customer.objects.get(name='Novartis'))
|
||||
Computer.objects.create(name='nestle-pc1',
|
||||
customer=Customer.objects.get(name='Nestle'))
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_customer_permissions():
|
||||
novartis_admin_group, nestle_admin_group = create_groups()
|
||||
novartis_admin, nestle_admin = create_users()
|
||||
novartis, nestle = create_customers()
|
||||
create_computers()
|
||||
novartis_admin.groups.add(novartis_admin_group)
|
||||
nestle_admin.groups.add(nestle_admin_group)
|
||||
assign_perm('view_customer', novartis_admin, novartis)
|
||||
assign_perm('view_customer', nestle_admin, nestle)
|
||||
def test_customer_permissions(make_admin_users, make_customers,
|
||||
make_admin_groups, make_computers):
|
||||
nestle = 'Nestle'
|
||||
novartis = 'Novartis'
|
||||
customer_names = [novartis, nestle]
|
||||
admins = make_admin_users(customer_names)
|
||||
customers = make_customers(customer_names)
|
||||
groups = make_admin_groups(customer_names)
|
||||
computers = make_computers(customer_names)
|
||||
|
||||
admins[novartis].groups.add(groups[novartis])
|
||||
admins[nestle].groups.add(groups[nestle])
|
||||
assign_perm('view_customer', admins[novartis], customers[novartis])
|
||||
assign_perm('view_customer', admins[nestle], customers[nestle])
|
||||
|
||||
novartis_client = Client()
|
||||
nestle_client = Client()
|
||||
response = novartis_client.post('/admin/', follow=True)
|
||||
loginresponse = novartis_client.login(username='novartis_admin',
|
||||
loginresponse = novartis_client.login(username=admins[novartis].username,
|
||||
password='password')
|
||||
response = novartis_client.get('/')
|
||||
print(response.content.decode('utf8'))
|
||||
assert ('Novartis' in response.content.decode('utf8') and
|
||||
'Nestle' not in response.content.decode('utf8'))
|
||||
assert (novartis in response.content.decode('utf8') and
|
||||
nestle not in response.content.decode('utf8'))
|
||||
|
|
Loading…
Reference in New Issue