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 -*-
|
# -*- 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):
|
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
|
scheme = None
|
||||||
name = "localhost"
|
public_register = False
|
||||||
domain = "localhost"
|
|
||||||
|
|
||||||
|
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