Change team invitation acceptance to join all invited teams under the org
Fixes #1989
This commit is contained in:
parent
1c3012a538
commit
402ad25690
3 changed files with 119 additions and 12 deletions
|
@ -227,14 +227,14 @@ class ApiTestCase(unittest.TestCase):
|
|||
def assertNotInTeam(self, data, membername):
|
||||
for memberData in data['members']:
|
||||
if memberData['name'] == membername:
|
||||
self.fail(membername + ' found in team: ' + json.dumps(data))
|
||||
self.fail(membername + ' found in team: ' + data['name'])
|
||||
|
||||
def assertInTeam(self, data, membername):
|
||||
for member_data in data['members']:
|
||||
if member_data['name'] == membername:
|
||||
return
|
||||
|
||||
self.fail(membername + ' not found in team: ' + py_json.dumps(data))
|
||||
self.fail(membername + ' not found in team: ' + data['name'])
|
||||
|
||||
def login(self, username, password='password'):
|
||||
return self.postJsonResponse(Signin, data=dict(username=username, password=password))
|
||||
|
@ -682,6 +682,94 @@ class TestCreateNewUser(ApiTestCase):
|
|||
teamname='owners'))
|
||||
self.assertNotInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
def test_createuser_withmultipleteaminvites(self):
|
||||
inviter = model.user.get_user(ADMIN_ACCESS_USER)
|
||||
owners_team = model.team.get_organization_team(ORGANIZATION, 'owners')
|
||||
readers_team = model.team.get_organization_team(ORGANIZATION, 'readers')
|
||||
other_owners_team = model.team.get_organization_team('library', 'owners')
|
||||
|
||||
owners_invite = model.team.add_or_invite_to_team(inviter, owners_team, None,
|
||||
NEW_USER_DETAILS['email'])
|
||||
|
||||
readers_invite = model.team.add_or_invite_to_team(inviter, readers_team, None,
|
||||
NEW_USER_DETAILS['email'])
|
||||
|
||||
other_owners_invite = model.team.add_or_invite_to_team(inviter, other_owners_team, None,
|
||||
NEW_USER_DETAILS['email'])
|
||||
|
||||
# Create the user and ensure they have a verified email address.
|
||||
details = {
|
||||
'invite_code': owners_invite.invite_token
|
||||
}
|
||||
details.update(NEW_USER_DETAILS)
|
||||
|
||||
data = self.postJsonResponse(User, data=details, expected_code=200)
|
||||
|
||||
# Make sure the user is verified since the email address of the user matches
|
||||
# that of the team invite.
|
||||
self.assertFalse('awaiting_verification' in data)
|
||||
|
||||
# Make sure the user was not (yet) added to the teams.
|
||||
self.login(ADMIN_ACCESS_USER)
|
||||
json = self.getJsonResponse(TeamMemberList,
|
||||
params=dict(orgname=ORGANIZATION,
|
||||
teamname='owners'))
|
||||
self.assertNotInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
json = self.getJsonResponse(TeamMemberList,
|
||||
params=dict(orgname=ORGANIZATION,
|
||||
teamname='readers'))
|
||||
self.assertNotInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
json = self.getJsonResponse(TeamMemberList,
|
||||
params=dict(orgname='library',
|
||||
teamname='owners'))
|
||||
self.assertNotInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
# Accept the first invitation.
|
||||
self.login(NEW_USER_DETAILS['username'])
|
||||
self.putJsonResponse(TeamMemberInvite, params=dict(code=owners_invite.invite_token))
|
||||
|
||||
# Make sure both codes are now invalid.
|
||||
self.putResponse(TeamMemberInvite, params=dict(code=owners_invite.invite_token),
|
||||
expected_code=400)
|
||||
|
||||
self.putResponse(TeamMemberInvite, params=dict(code=readers_invite.invite_token),
|
||||
expected_code=400)
|
||||
|
||||
# Make sure the user is now in the two invited teams under the organization, but not
|
||||
# in the other org's team.
|
||||
self.login(ADMIN_ACCESS_USER)
|
||||
json = self.getJsonResponse(TeamMemberList,
|
||||
params=dict(orgname=ORGANIZATION,
|
||||
teamname='owners'))
|
||||
self.assertInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
json = self.getJsonResponse(TeamMemberList,
|
||||
params=dict(orgname=ORGANIZATION,
|
||||
teamname='readers'))
|
||||
self.assertInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
json = self.getJsonResponse(TeamMemberList,
|
||||
params=dict(orgname='library',
|
||||
teamname='owners'))
|
||||
self.assertNotInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
# Accept the second invitation.
|
||||
self.login(NEW_USER_DETAILS['username'])
|
||||
self.putJsonResponse(TeamMemberInvite, params=dict(code=other_owners_invite.invite_token))
|
||||
|
||||
# Make sure the user was added to the other organization.
|
||||
self.login(ADMIN_ACCESS_USER)
|
||||
json = self.getJsonResponse(TeamMemberList,
|
||||
params=dict(orgname='library',
|
||||
teamname='owners'))
|
||||
self.assertInTeam(json, NEW_USER_DETAILS['username'])
|
||||
|
||||
# Make sure the invitation codes are now invalid.
|
||||
self.putResponse(TeamMemberInvite, params=dict(code=other_owners_invite.invite_token),
|
||||
expected_code=400)
|
||||
|
||||
|
||||
class TestDeleteNamespace(ApiTestCase):
|
||||
def test_deletenamespaces(self):
|
||||
|
|
Reference in a new issue