move the data creation into fixtures
This commit is contained in:
parent
66706c854e
commit
4c761e551a
|
@ -1,8 +1,61 @@
|
||||||
import pytest
|
import pytest
|
||||||
from django.core.management import call_command
|
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')
|
@pytest.fixture(scope='session')
|
||||||
def django_db_setup(django_db_setup, django_db_blocker):
|
def django_db_setup(django_db_setup, django_db_blocker):
|
||||||
with django_db_blocker.unblock():
|
with django_db_blocker.unblock():
|
||||||
call_command('loaddata', 'inventory.yaml')
|
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 django.test import Client
|
||||||
from guardian.shortcuts import assign_perm
|
from guardian.shortcuts import assign_perm
|
||||||
import pytest
|
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
|
@pytest.mark.django_db
|
||||||
def test_customer_permissions():
|
def test_customer_permissions(make_admin_users, make_customers,
|
||||||
novartis_admin_group, nestle_admin_group = create_groups()
|
make_admin_groups, make_computers):
|
||||||
novartis_admin, nestle_admin = create_users()
|
nestle = 'Nestle'
|
||||||
novartis, nestle = create_customers()
|
novartis = 'Novartis'
|
||||||
create_computers()
|
customer_names = [novartis, nestle]
|
||||||
novartis_admin.groups.add(novartis_admin_group)
|
admins = make_admin_users(customer_names)
|
||||||
nestle_admin.groups.add(nestle_admin_group)
|
customers = make_customers(customer_names)
|
||||||
assign_perm('view_customer', novartis_admin, novartis)
|
groups = make_admin_groups(customer_names)
|
||||||
assign_perm('view_customer', nestle_admin, nestle)
|
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()
|
novartis_client = Client()
|
||||||
nestle_client = Client()
|
nestle_client = Client()
|
||||||
response = novartis_client.post('/admin/', follow=True)
|
response = novartis_client.post('/admin/', follow=True)
|
||||||
loginresponse = novartis_client.login(username='novartis_admin',
|
loginresponse = novartis_client.login(username=admins[novartis].username,
|
||||||
password='password')
|
password='password')
|
||||||
response = novartis_client.get('/')
|
response = novartis_client.get('/')
|
||||||
print(response.content.decode('utf8'))
|
print(response.content.decode('utf8'))
|
||||||
assert ('Novartis' in response.content.decode('utf8') and
|
assert (novartis in response.content.decode('utf8') and
|
||||||
'Nestle' not in response.content.decode('utf8'))
|
nestle not in response.content.decode('utf8'))
|
||||||
|
|
Loading…
Reference in New Issue