Some integration tests for auth api.
parent
4391099864
commit
ac0345047b
|
@ -1,23 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import pytest
|
||||
from unittest import mock
|
||||
|
||||
from rest_framework.reverse import reverse
|
||||
|
||||
from ..factories import DomainFactory
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def setup_module(module):
|
||||
module.patcher = mock.patch("taiga.domains.base.get_default_domain", DomainFactory.build)
|
||||
module.patcher.start()
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
module.patcher.stop()
|
||||
|
||||
|
||||
def test_respond_400_if_credentials_are_invalid(client):
|
||||
response = client.post(reverse("auth-list"), {"username": "john", "password": "smith"})
|
||||
assert response.status_code == 400
|
|
@ -1,13 +1,62 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import factory
|
||||
import uuid
|
||||
|
||||
from taiga.domains import models
|
||||
import factory
|
||||
from django.conf import settings
|
||||
|
||||
import taiga.domains.models
|
||||
import taiga.projects.models
|
||||
import taiga.users.models
|
||||
|
||||
|
||||
class DomainFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = models.Domain
|
||||
FACTORY_FOR = taiga.domains.models.Domain
|
||||
FACTORY_DJANGO_GET_OR_CREATE = ("domain",)
|
||||
|
||||
public_register = False
|
||||
name = "Default domain"
|
||||
domain = "default"
|
||||
scheme = None
|
||||
name = "localhost"
|
||||
domain = "localhost"
|
||||
public_register = False
|
||||
|
||||
|
||||
class ProjectTemplateFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = taiga.projects.models.ProjectTemplate
|
||||
|
||||
name = "Template name"
|
||||
slug = settings.DEFAULT_PROJECT_TEMPLATE
|
||||
default_owner_role = "tester"
|
||||
|
||||
|
||||
class ProjectFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = taiga.projects.models.Project
|
||||
|
||||
name = factory.Sequence(lambda n: "Project {}".format(n))
|
||||
slug = factory.Sequence(lambda n: "project-{}-slug".format(n))
|
||||
description = "Project description"
|
||||
owner = factory.SubFactory("tests.factories.UserFactory")
|
||||
domain = factory.SubFactory("tests.factories.DomainFactory")
|
||||
creation_template = factory.SubFactory("tests.factories.ProjectTemplateFactory")
|
||||
|
||||
|
||||
class RoleFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = taiga.users.models.Role
|
||||
|
||||
name = "Tester"
|
||||
project = factory.SubFactory("tests.factories.ProjectFactory")
|
||||
|
||||
|
||||
class UserFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = taiga.users.models.User
|
||||
|
||||
username = factory.Sequence(lambda n: "user{}".format(n))
|
||||
email = factory.LazyAttribute(lambda obj: '%s@email.com' % obj.username)
|
||||
password = factory.PostGeneration(lambda obj, *args, **kwargs: obj.set_password(obj.username))
|
||||
|
||||
|
||||
class MembershipFactory(factory.DjangoModelFactory):
|
||||
FACTORY_FOR = taiga.projects.models.Membership
|
||||
|
||||
token = factory.LazyAttribute(lambda obj: uuid.uuid1())
|
||||
project = factory.SubFactory("tests.factories.ProjectFactory")
|
||||
role = factory.SubFactory("tests.factories.RoleFactory")
|
||||
user = factory.SubFactory("tests.factories.UserFactory")
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
|
||||
from rest_framework.reverse import reverse
|
||||
|
||||
from .. import factories
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
def setup_module(module):
|
||||
module.patcher = mock.patch("taiga.domains.base.get_default_domain",
|
||||
mock.Mock(return_value=factories.DomainFactory()))
|
||||
module.patcher.start()
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
module.patcher.stop()
|
||||
|
||||
|
||||
class TestPublicRegistration:
|
||||
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
cls.form = {"username": "username", "password": "password", "first_name": "fname",
|
||||
"last_name": "lname", "email": "user@email.com", "type": "public"}
|
||||
|
||||
def test_respond_201_if_domain_allows_public_registration(self, client):
|
||||
domain = factories.DomainFactory(public_register=True)
|
||||
response = client.post(reverse("auth-register"), self.form, HTTP_X_HOST=domain.domain)
|
||||
assert response.status_code == 201
|
||||
|
||||
def test_respond_400_if_domain_does_not_allow_public_registration(self, client):
|
||||
domain = factories.DomainFactory(public_register=False)
|
||||
response = client.post(reverse("auth-register"), self.form, HTTP_X_HOST=domain.domain)
|
||||
assert response.status_code == 400
|
||||
|
||||
|
||||
@pytest.mark.xfail
|
||||
class TestPrivateRegistration:
|
||||
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
cls.form = {"username": "username", "password": "password", "first_name": "fname",
|
||||
"last_name": "lname", "email": "user@email.com", "type": "private",
|
||||
"existing": "1"}
|
||||
|
||||
def test_respond_201_if_domain_allows_public_registration(self, client):
|
||||
domain = factories.DomainFactory(public_register=True)
|
||||
membership = factories.MembershipFactory()
|
||||
headers = {"HTTP_X_HOST": domain.domain}
|
||||
response = client.post(reverse("auth-register"), self.form, **headers)
|
||||
assert response.status_code == 201
|
Loading…
Reference in New Issue