Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
578 changes: 456 additions & 122 deletions system_admin_account_operations.yaml

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions tests/__snapshots__/test_departments/test_addDepartment.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"department": {
"id": "int",
"id_in_org": "int",
"name": "Developers",
"org_id": -1,
"parent_id": "int"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"failed": [
{
"department": {
"id": "int",
"id_in_org": "int",
"name": "multi-add-1",
"org_id": -1,
"parent_id": "int"
},
"error_msg": "User has been in multi-add-1"
}
],
"success": [
{
"id": "int",
"id_in_org": "int",
"name": "multi-add-2",
"org_id": -1,
"parent_id": "int"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"success": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"group_id": "int",
"group_name": "group-test"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"success": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"failed": [],
"success": [
{
"avatar_url": "str",
"contact_email": "testuser@example.com",
"email": "str",
"name": "Test User"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"member_list": [
{
"avatar_url": "str",
"contact_email": "testuser@example.com",
"email": "str",
"is_staff": false,
"name": "Test User"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"success": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"member": {
"avatar_url": "str",
"contact_email": "testuser@example.com",
"email": "str",
"is_staff": true,
"name": "Test User"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"department_list": [
{
"id": "int",
"id_in_org": "int",
"name": "automated-testing-top",
"org_id": -1,
"parent_id": "int"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"avatar_url": "str",
"contact_email": "testuser@example.com",
"email": "str",
"name": "Test User"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"department": {
"id": "int",
"id_in_org": "int",
"name": "new-name",
"org_id": -1,
"parent_id": "int"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"failed": [],
"success": [
{
"avatar_url": "str",
"contact_email": "admin@example.com",
"department_id": "int",
"email": "str",
"group_id": "int",
"is_admin": false,
"login_id": "",
"name": "admin",
"role": "Member"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"success": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"avatar_url": "str",
"contact_email": "admin@example.com",
"department_id": "int",
"email": "str",
"group_id": "int",
"is_admin": true,
"login_id": "",
"name": "admin",
"role": "Admin"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"count": 1
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"dtable_list": [
{
"backend": "js",
"color": null,
"created_at": "str",
"icon": null,
"id": "int",
"in_storage": true,
"is_encrypted": false,
"name": "automated-testing-departments",
"text_color": null,
"updated_at": "str",
"uuid": "str",
"workspace_id": "int"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"member_list": [
{
"avatar_url": "str",
"contact_email": "testuser@example.com",
"email": "str",
"is_admin": true,
"is_staff": true,
"name": "Test User",
"role": "Admin"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"departments": [
{
"id": "int",
"id_in_org": "int",
"name": "automated-testing-top",
"org_id": -1,
"parent_id": "int"
},
{
"id": "int",
"id_in_org": "int",
"name": "automated-testing-sub",
"org_id": -1,
"parent_id": "int"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"department_list": [
{
"id": "int",
"id_in_org": "int",
"name": "automated-testing-sub",
"org_id": -1,
"parent_id": "int"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"department_list": [
{
"id": "int",
"id_in_org": "int",
"name": "automated-testing-sub",
"org_id": -1,
"parent_id": "int",
"sub_departments": []
}
]
}
63 changes: 63 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,69 @@ def delete_group(account_token: Secret, group_id: int):

assert response.status_code == 200

# Departments (system admin)

def _admin_headers(token: Secret) -> dict:
return {'Authorization': f'Bearer {token.value}'}


def list_departments(token: Secret, parent_id: int = -1) -> list[dict]:
case: Case = system_admin_account_operations.find_operation_by_id('listDepartments') \
.Case(query={'parent_id': parent_id})
response = case.call(headers=_admin_headers(token))
assert response.status_code == 200
return response.json()['department_list']


def create_department(token: Secret, name: str, parent_id: int) -> int:
case: Case = system_admin_account_operations.find_operation_by_id('addDepartment') \
.Case(body={'name': name, 'parent_id': parent_id})
response = case.call(headers=_admin_headers(token))
assert response.status_code == 200

department_id = response.json()['department']['id']
assert isinstance(department_id, int)
return department_id


def delete_department(token: Secret, department_id: int):
"""Deletes a department including all of its sub-departments."""
if CLEANUP_AFTER_TESTS != 'True':
return

for sub_department in list_departments(token, department_id):
delete_department(token, sub_department['id'])

case: Case = system_admin_account_operations.find_operation_by_id('deleteDepartment') \
.Case(path_parameters={'department_id': department_id})
response = case.call(headers=_admin_headers(token))
assert response.status_code == 200


@pytest.fixture(scope='module')
def top_department(system_admin_account_token: Secret) -> Generator[int, None, None]:
"""There can be only one top-level department, so it is shared by all tests in a module."""
existing = list_departments(system_admin_account_token)
if existing:
department_id = existing[0]['id']
else:
department_id = create_department(system_admin_account_token, 'automated-testing-top', -1)

yield department_id

delete_department(system_admin_account_token, department_id)


@pytest.fixture(scope='module')
def user_id(system_admin_account_token: Secret) -> str:
"""The internal @auth.local ID of the regular test user."""
case: Case = system_admin_account_operations.find_operation_by_id('listUsers').Case()
response = case.call(headers=_admin_headers(system_admin_account_token))
assert response.status_code == 200

user = next(u for u in response.json()['data'] if u['contact_email'] == USERNAME)
return user['email']

MIN_LICENSE_USERS = 10

def _get_license_maxusers() -> int:
Expand Down
Loading