mirror of
https://github.com/quay/quay.git
synced 2026-01-26 06:21:37 +03:00
* chore: update werkzeug and related package versions (PROJQUAY-5098) Path converter related change reference: https://github.com/pallets/werkzeug/issues/2506 * Update query count
103 lines
4.3 KiB
Python
103 lines
4.3 KiB
Python
import json
|
|
from test.fixtures import *
|
|
from test.test_ldap import mock_ldap
|
|
|
|
from mock import patch
|
|
|
|
from data import model
|
|
from endpoints.api import api
|
|
from endpoints.api.organization import Organization
|
|
from endpoints.api.team import OrganizationTeamSyncing, TeamMemberList
|
|
from endpoints.api.test.shared import conduct_api_call
|
|
from endpoints.test.shared import client_with_identity
|
|
|
|
SYNCED_TEAM_PARAMS = {"orgname": "sellnsmall", "teamname": "synced"}
|
|
UNSYNCED_TEAM_PARAMS = {"orgname": "sellnsmall", "teamname": "owners"}
|
|
|
|
|
|
def test_team_syncing(app):
|
|
with mock_ldap() as ldap:
|
|
with patch("endpoints.api.team.authentication", ldap):
|
|
with client_with_identity("devtable", app) as cl:
|
|
config = {
|
|
"group_dn": "cn=AwesomeFolk",
|
|
}
|
|
|
|
conduct_api_call(cl, OrganizationTeamSyncing, "POST", UNSYNCED_TEAM_PARAMS, config)
|
|
|
|
# Ensure the team is now synced.
|
|
sync_info = model.team.get_team_sync_information(
|
|
UNSYNCED_TEAM_PARAMS["orgname"], UNSYNCED_TEAM_PARAMS["teamname"]
|
|
)
|
|
assert sync_info is not None
|
|
assert json.loads(sync_info.config) == config
|
|
|
|
# Remove the syncing.
|
|
conduct_api_call(cl, OrganizationTeamSyncing, "DELETE", UNSYNCED_TEAM_PARAMS, None)
|
|
|
|
# Ensure the team is no longer synced.
|
|
sync_info = model.team.get_team_sync_information(
|
|
UNSYNCED_TEAM_PARAMS["orgname"], UNSYNCED_TEAM_PARAMS["teamname"]
|
|
)
|
|
assert sync_info is None
|
|
|
|
|
|
def test_team_member_sync_info_unsynced_superuser(app):
|
|
with mock_ldap() as ldap:
|
|
with patch("endpoints.api.team.authentication", ldap):
|
|
# Check for an unsynced team, with superuser.
|
|
with client_with_identity("devtable", app) as cl:
|
|
resp = conduct_api_call(cl, TeamMemberList, "GET", UNSYNCED_TEAM_PARAMS)
|
|
assert "can_sync" in resp.json
|
|
assert resp.json["can_sync"]["service"] == "ldap"
|
|
assert "synced" not in resp.json
|
|
|
|
|
|
def test_team_member_sync_info_unsynced_nonsuperuser(app):
|
|
with mock_ldap() as ldap:
|
|
with patch("endpoints.api.team.authentication", ldap):
|
|
# Check for an unsynced team, with non-superuser.
|
|
with client_with_identity("randomuser", app) as cl:
|
|
resp = conduct_api_call(cl, TeamMemberList, "GET", UNSYNCED_TEAM_PARAMS)
|
|
assert "can_sync" not in resp.json
|
|
assert "synced" not in resp.json
|
|
|
|
|
|
def test_team_member_sync_info_synced_superuser(app):
|
|
with mock_ldap() as ldap:
|
|
with patch("endpoints.api.team.authentication", ldap):
|
|
# Check for a synced team, with superuser.
|
|
with client_with_identity("devtable", app) as cl:
|
|
resp = conduct_api_call(cl, TeamMemberList, "GET", SYNCED_TEAM_PARAMS)
|
|
assert "can_sync" in resp.json
|
|
assert resp.json["can_sync"]["service"] == "ldap"
|
|
|
|
assert "synced" in resp.json
|
|
assert "last_updated" in resp.json["synced"]
|
|
assert "group_dn" in resp.json["synced"]["config"]
|
|
|
|
|
|
def test_team_member_sync_info_synced_nonsuperuser(app):
|
|
with mock_ldap() as ldap:
|
|
with patch("endpoints.api.team.authentication", ldap):
|
|
# Check for a synced team, with non-superuser.
|
|
with client_with_identity("randomuser", app) as cl:
|
|
resp = conduct_api_call(cl, TeamMemberList, "GET", SYNCED_TEAM_PARAMS)
|
|
assert "can_sync" not in resp.json
|
|
|
|
assert "synced" in resp.json
|
|
assert "last_updated" not in resp.json["synced"]
|
|
assert "config" not in resp.json["synced"]
|
|
|
|
|
|
def test_organization_teams_sync_bool(app):
|
|
with mock_ldap() as ldap:
|
|
with patch("endpoints.api.organization.authentication", ldap):
|
|
# Ensure synced teams are marked as such in the organization teams list.
|
|
with client_with_identity("devtable", app) as cl:
|
|
resp = conduct_api_call(cl, Organization, "GET", {"orgname": "sellnsmall"})
|
|
|
|
assert not resp.json["teams"]["owners"]["is_synced"]
|
|
|
|
assert resp.json["teams"]["synced"]["is_synced"]
|