Skip to content

Commit addad4d

Browse files
authored
Manage organization "People" (#11342)
1 parent 64fc7f1 commit addad4d

File tree

63 files changed

+5102
-202
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+5102
-202
lines changed

tests/common/db/organizations.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
OrganizationNameCatalog,
2222
OrganizationProject,
2323
OrganizationRole,
24+
OrganizationRoleType,
2425
)
2526

2627
from .accounts import UserFactory
@@ -61,15 +62,15 @@ class OrganizationNameCatalogFactory(WarehouseFactory):
6162
class Meta:
6263
model = OrganizationNameCatalog
6364

64-
name = factory.Faker("orgname")
65+
name = factory.Faker("pystr", max_chars=12)
6566
organization_id = factory.Faker("uuid4", cast_to=None)
6667

6768

6869
class OrganizationRoleFactory(WarehouseFactory):
6970
class Meta:
7071
model = OrganizationRole
7172

72-
role_name = "Owner"
73+
role_name = OrganizationRoleType.Owner
7374
user = factory.SubFactory(UserFactory)
7475
organization = factory.SubFactory(OrganizationFactory)
7576

tests/conftest.py

+53-5
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,19 @@
3838

3939
import warehouse
4040

41-
from warehouse import admin, config, static
41+
from warehouse import admin, config, email, static
4242
from warehouse.accounts import services as account_services
43-
from warehouse.accounts.interfaces import ITokenService
43+
from warehouse.accounts.interfaces import ITokenService, IUserService
4444
from warehouse.admin.flags import AdminFlag, AdminFlagValue
4545
from warehouse.email import services as email_services
4646
from warehouse.email.interfaces import IEmailSender
4747
from warehouse.macaroons import services as macaroon_services
4848
from warehouse.metrics import IMetricsService
4949
from warehouse.organizations import services as organization_services
50+
from warehouse.organizations.interfaces import IOrganizationService
5051

5152
from .common.db import Session
53+
from .common.db.accounts import EmailFactory, UserFactory
5254

5355

5456
def pytest_collection_modifyitems(items):
@@ -120,14 +122,18 @@ def find_service(self, iface=None, context=None, name=""):
120122

121123

122124
@pytest.fixture
123-
def pyramid_services(metrics, email_service, token_service):
125+
def pyramid_services(
126+
email_service, metrics, organization_service, token_service, user_service
127+
):
124128
services = _Services()
125129

126130
# Register our global services.
127-
services.register_service(metrics, IMetricsService, None, name="")
128131
services.register_service(email_service, IEmailSender, None, name="")
132+
services.register_service(metrics, IMetricsService, None, name="")
133+
services.register_service(organization_service, IOrganizationService, None, name="")
129134
services.register_service(token_service, ITokenService, None, name="password")
130135
services.register_service(token_service, ITokenService, None, name="email")
136+
services.register_service(user_service, IUserService, None, name="")
131137

132138
return services
133139

@@ -159,6 +165,14 @@ def pyramid_config(pyramid_request):
159165
yield config
160166

161167

168+
@pytest.fixture
169+
def pyramid_user(pyramid_request):
170+
user = UserFactory.create()
171+
EmailFactory.create(user=user, verified=True)
172+
pyramid_request.user = user
173+
return user
174+
175+
162176
@pytest.fixture
163177
def cli():
164178
runner = click.testing.CliRunner()
@@ -351,7 +365,7 @@ def db_request(pyramid_request, db_session):
351365
return pyramid_request
352366

353367

354-
@pytest.fixture()
368+
@pytest.fixture
355369
def enable_organizations(db_request):
356370
flag = db_request.db.query(AdminFlag).get(
357371
AdminFlagValue.DISABLE_ORGANIZATIONS.value
@@ -361,6 +375,40 @@ def enable_organizations(db_request):
361375
flag.enabled = True
362376

363377

378+
@pytest.fixture
379+
def send_email(pyramid_request, monkeypatch):
380+
send_email_stub = pretend.stub(
381+
delay=pretend.call_recorder(lambda *args, **kwargs: None)
382+
)
383+
pyramid_request.task = pretend.call_recorder(
384+
lambda *args, **kwargs: send_email_stub
385+
)
386+
pyramid_request.registry.settings = {"mail.sender": "[email protected]"}
387+
monkeypatch.setattr(email, "send_email", send_email_stub)
388+
return send_email_stub
389+
390+
391+
@pytest.fixture
392+
def make_email_renderers(pyramid_config):
393+
def _make_email_renderers(
394+
name,
395+
subject="Email Subject",
396+
body="Email Body",
397+
html="Email HTML Body",
398+
):
399+
subject_renderer = pyramid_config.testing_add_renderer(
400+
f"email/{name}/subject.txt"
401+
)
402+
subject_renderer.string_response = subject
403+
body_renderer = pyramid_config.testing_add_renderer(f"email/{name}/body.txt")
404+
body_renderer.string_response = body
405+
html_renderer = pyramid_config.testing_add_renderer(f"email/{name}/body.html")
406+
html_renderer.string_response = html
407+
return subject_renderer, body_renderer, html_renderer
408+
409+
return _make_email_renderers
410+
411+
364412
class _TestApp(_webtest.TestApp):
365413
def xmlrpc(self, path, method, *args):
366414
body = xmlrpc.client.dumps(args, methodname=method)

0 commit comments

Comments
 (0)