Source code for swagger_server.test.controllers.test_invitationsiterole_controller

import random
import uuid
from datetime import datetime

import werkzeug

from ge_core_shared import db_actions, decorators

from project.settings import API_KEY_HEADER
from swagger_server.models import Site, Domain
from swagger_server.models import SiteRole
from swagger_server.models import Role
from swagger_server.models import Invitation
from swagger_server.models import InvitationSiteRole
from swagger_server.models import InvitationSiteRoleCreate
from swagger_server.test import BaseTestCase
from flask import json


[docs]class InvitationSiteRoleTestCase(BaseTestCase):
[docs] @decorators.db_exception def setUp(self): super().setUp() self.role_data = { "label": ("%s" % uuid.uuid4())[:30], "description": "invitation_site_role to create", } self.role_model = db_actions.crud( model="Role", api_model=Role, data=self.role_data, action="create" ) self.domain_data = { "name": ("%s" % uuid.uuid4())[:30], "description": "a super cool test domain", } self.domain_model = db_actions.crud( model="Domain", api_model=Domain, data=self.domain_data, action="create" ) self.site_data = { "name": ("%s" % uuid.uuid4())[:30], "description": "a super cool test site", "domain_id": self.domain_model.id } self.site_model = db_actions.crud( model="Site", api_model=Site, data=self.site_data, action="create" ) self.site_role_data = { "role_id": self.role_model.id, "site_id": self.site_model.id } self.site_role_model = db_actions.crud( model="SiteRole", api_model=SiteRole, data=self.site_role_data, action="create" ) self.invitation_data = { "first_name": "first", "last_name": "last", "email": "invitationsiterole@test.com", "organisation_id": 1, "invitor_id": "%s" % uuid.uuid1(), "expires_at": datetime.now() } self.invitation_model = db_actions.crud( model="Invitation", api_model=Invitation, data=self.invitation_data, action="create" ) self.headers = {API_KEY_HEADER: "test-api-key"}
[docs] def test_invitationsiterole_create(self): data = InvitationSiteRoleCreate(**{ "site_id": self.site_model.id, "role_id": self.role_model.id, "invitation_id": self.invitation_model.id }) response = self.client.open( '/api/v1/invitationsiteroles', method='POST', data=json.dumps(data), content_type='application/json', headers=self.headers) r_data = json.loads(response.data) self.assertEqual(r_data["role_id"], data.role_id) self.assertEqual(r_data["site_id"], data.site_id)
[docs] def test_invitationsiterole_delete(self): data = { "site_id": self.site_model.id, "role_id": self.role_model.id, "invitation_id": self.invitation_model.id } invitation_site_role = db_actions.crud( model="InvitationSiteRole", api_model=InvitationSiteRole, data=data, action="create" ) with self.assertRaises(werkzeug.exceptions.NotFound): response = self.client.open( '/api/v1/invitationsiteroles/{invitation_id}/{site_id}/{role_id}'.format( invitation_id=invitation_site_role.invitation_id, site_id=invitation_site_role.site_id, role_id=invitation_site_role.role_id, ), method='DELETE', headers=self.headers) db_actions.crud( model="InvitationSiteRole", api_model=InvitationSiteRole, action="read", query={ "role_id": invitation_site_role.role_id, "site_id": invitation_site_role.site_id, "invitation_id": invitation_site_role.invitation_id } )
[docs] def test_invitationsiterole_read(self): data = { "site_id": self.site_model.id, "role_id": self.role_model.id, "invitation_id": self.invitation_model.id } invitation_site_role = db_actions.crud( model="InvitationSiteRole", api_model=InvitationSiteRole, data=data, action="create" ) response = self.client.open( '/api/v1/invitationsiteroles/{invitation_id}/{site_id}/{role_id}'.format( invitation_id=invitation_site_role.invitation_id, site_id=invitation_site_role.site_id, role_id=invitation_site_role.role_id, ), method='GET', headers=self.headers) r_data = json.loads(response.data) self.assertEqual(r_data["role_id"], invitation_site_role.role_id) self.assertEqual(r_data["site_id"], invitation_site_role.site_id)
[docs] def test_invitationsiterole_list(self): objects = [] num_entries = random.randint(5, 20) for index in range(1, num_entries): role_data = { "label": ("%s" % uuid.uuid4())[:30], "description": "invitation_site_role to create", } role_model = db_actions.crud( model="Role", api_model=Role, data=role_data, action="create" ) site_role_data = { "role_id": role_model.id, "site_id": self.site_model.id } site_role_model = db_actions.crud( model="SiteRole", api_model=SiteRole, data=site_role_data, action="create" ) invitation_site_role_data = { "role_id": role_model.id, "site_id": self.site_model.id, "invitation_id": self.invitation_model.id } objects.append(db_actions.crud( model="InvitationSiteRole", api_model=InvitationSiteRole, data=invitation_site_role_data, action="create" )) query_string = [ ("limit", 2), ("invitation_id", self.invitation_model.id) ] response = self.client.open( '/api/v1/invitationsiteroles', method='GET', query_string=query_string, headers=self.headers) r_data = json.loads(response.data) self.assertEqual(len(r_data), 2) self.assertEqual(int(response.headers["X-Total-Count"]), len(objects))