mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
114 lines
4.8 KiB
Python
114 lines
4.8 KiB
Python
from sentry import roles
|
|
from sentry.models.organization import Organization
|
|
from sentry.models.organizationmember import OrganizationMember
|
|
from sentry.models.user import User
|
|
from sentry.models.userrole import manage_default_super_admin_role
|
|
from sentry.receivers import create_default_projects
|
|
from sentry.runner.commands.createuser import createuser
|
|
from sentry.services.hybrid_cloud.user.service import user_service
|
|
from sentry.silo import SiloMode
|
|
from sentry.testutils.cases import CliTestCase
|
|
from sentry.testutils.silo import assume_test_silo_mode, control_silo_test
|
|
|
|
|
|
@control_silo_test
|
|
class CreateUserTest(CliTestCase):
|
|
command = createuser
|
|
default_args = ["--no-input"]
|
|
|
|
def setUp(self) -> None:
|
|
super().setUp()
|
|
with assume_test_silo_mode(SiloMode.REGION):
|
|
create_default_projects()
|
|
manage_default_super_admin_role()
|
|
|
|
def test_superuser(self):
|
|
rv = self.invoke("[email protected]", "--password=awesome", "--superuser")
|
|
assert rv.exit_code == 0, rv.output
|
|
assert "[email protected]" in rv.output
|
|
assert User.objects.count() == 1
|
|
user = User.objects.all()[0]
|
|
assert user.email == "[email protected]"
|
|
assert user.check_password("awesome")
|
|
assert user.is_superuser
|
|
assert user.is_staff
|
|
assert user.is_active
|
|
|
|
def test_no_superuser(self):
|
|
rv = self.invoke("[email protected]", "--password=awesome")
|
|
assert rv.exit_code == 0, rv.output
|
|
assert "[email protected]" in rv.output
|
|
assert User.objects.count() == 1
|
|
user = User.objects.all()[0]
|
|
assert user.email == "[email protected]"
|
|
assert user.check_password("awesome")
|
|
assert not user.is_superuser
|
|
assert not user.is_staff
|
|
assert user.is_active
|
|
|
|
def test_no_password(self):
|
|
rv = self.invoke("[email protected]", "--no-password")
|
|
assert rv.exit_code == 0, rv.output
|
|
assert "[email protected]" in rv.output
|
|
assert User.objects.count() == 1
|
|
user = User.objects.all()[0]
|
|
assert user.email == "[email protected]"
|
|
assert not user.password
|
|
assert not user.is_superuser
|
|
assert not user.is_staff
|
|
assert user.is_active
|
|
|
|
def test_single_org(self):
|
|
with self.settings(SENTRY_SINGLE_ORGANIZATION=True):
|
|
rv = self.invoke("[email protected]", "--no-password")
|
|
assert rv.exit_code == 0, rv.output
|
|
assert "[email protected]" in rv.output
|
|
with assume_test_silo_mode(SiloMode.REGION):
|
|
assert OrganizationMember.objects.count() == 1
|
|
member = OrganizationMember.objects.all()[0]
|
|
u = user_service.get_user(user_id=member.user_id)
|
|
assert u
|
|
assert u.email == "[email protected]"
|
|
assert member.organization.slug in rv.output
|
|
assert member.role == member.organization.default_role
|
|
|
|
def test_single_org_superuser(self):
|
|
with self.settings(SENTRY_SINGLE_ORGANIZATION=True):
|
|
rv = self.invoke("[email protected]", "--no-password", "--superuser")
|
|
assert rv.exit_code == 0, rv.output
|
|
assert "[email protected]" in rv.output
|
|
with assume_test_silo_mode(SiloMode.REGION):
|
|
assert OrganizationMember.objects.count() == 1
|
|
member = OrganizationMember.objects.all()[0]
|
|
u = user_service.get_user(user_id=member.user_id)
|
|
assert u
|
|
assert u.email == "[email protected]"
|
|
assert member.organization.slug in rv.output
|
|
assert member.role == roles.get_top_dog().id
|
|
|
|
def test_single_org_with_specified_id(self):
|
|
with assume_test_silo_mode(SiloMode.REGION):
|
|
sentry_org = Organization.objects.get(slug="sentry")
|
|
with self.settings(SENTRY_SINGLE_ORGANIZATION=True):
|
|
rv = self.invoke(
|
|
"[email protected]", "--no-password", f"--org-id={sentry_org.id}"
|
|
)
|
|
assert rv.exit_code == 0, rv.output
|
|
|
|
def test_not_single_org(self):
|
|
with self.settings(SENTRY_SINGLE_ORGANIZATION=False):
|
|
rv = self.invoke("[email protected]", "--no-password")
|
|
assert rv.exit_code == 0, rv.output
|
|
assert "[email protected]" in rv.output
|
|
with assume_test_silo_mode(SiloMode.REGION):
|
|
member_count = OrganizationMember.objects.count()
|
|
assert member_count == 0
|
|
|
|
def test_no_input(self):
|
|
rv = self.invoke()
|
|
assert rv.exit_code != 0, rv.output
|
|
|
|
def test_missing_password(self):
|
|
rv = self.invoke("[email protected]")
|
|
assert rv.exit_code != 0, rv.output
|