From 4c761e551a69d2862079719d082b0ac846b0d956 Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Sun, 14 Jul 2019 12:58:10 +0200 Subject: [PATCH] move the data creation into fixtures --- network_inventory/inventory/tests/conftest.py | 53 +++++++++++++++ .../inventory/tests/test_permissions.py | 65 +++++-------------- 2 files changed, 70 insertions(+), 48 deletions(-) diff --git a/network_inventory/inventory/tests/conftest.py b/network_inventory/inventory/tests/conftest.py index 013cccd..4ab58e6 100644 --- a/network_inventory/inventory/tests/conftest.py +++ b/network_inventory/inventory/tests/conftest.py @@ -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 diff --git a/network_inventory/inventory/tests/test_permissions.py b/network_inventory/inventory/tests/test_permissions.py index 95847e2..acc440d 100644 --- a/network_inventory/inventory/tests/test_permissions.py +++ b/network_inventory/inventory/tests/test_permissions.py @@ -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'))