diff options
author | George Goldberg <george@gberg.me> | 2018-04-20 19:49:13 +0100 |
---|---|---|
committer | Martin Kraft <mkraft@users.noreply.github.com> | 2018-04-20 14:49:13 -0400 |
commit | cd55c44c8fd8f61cdb7cbfb57a588be82c7aa0ab (patch) | |
tree | 2979276d03b5bca72b549d7576eab104ceefd495 /api4 | |
parent | 853445dc2ea68f765faa04ad14618b04f1081c43 (diff) | |
download | chat-cd55c44c8fd8f61cdb7cbfb57a588be82c7aa0ab.tar.gz chat-cd55c44c8fd8f61cdb7cbfb57a588be82c7aa0ab.tar.bz2 chat-cd55c44c8fd8f61cdb7cbfb57a588be82c7aa0ab.zip |
MM-8796: Full implementation of "Schemes" in Store/Model/App layers. (#8357)
* Add Scheme model and stub store.
* Port ChannelStore to be Scheme aware.
* Make almost all the API/APP layer work with ChannelSchemes.
Only thing still hacky is UpdateChannelMemberRoles().
* Add basic SchemeStore implementation.
* Migrate UpdateChannelMemberRoles properly and fix tests.
* Update store tests and mocks so they work.
* Include creating default roles in Scheme create store function.
* Implement role deletion and start scheme deletion.
* Only use non-deleted roles for authorization.
* Add GetByScheme method to Team store.
* Add GetChannelsByScheme.
* Update store mocks.
* Implement scheme deletion in the store.
* Rename is valid function.
* Add offset and limit to queries to fetch teams and channels by scheme.
* Fix queries.
* Implement scheme awareness in Team store and add a migration.
* Tidy up ChannelStore mapping functions and add exhaustive unit tests.
* Add all missing i18n.
* Proper tests for TeamStore internal functions and fix them.
* Make additional TeamMember fields nullable.
* Make new ChannelMember fields nullable.
* Create new nullable columns without defaults.
* Make new fields in large tables nullalble.
* Fix empty list of TeamMembers.
* Deduplicate SQL queries.
* Fix spelling.
* Fix review comment.
* More review fixes.
* More review fixes.
Diffstat (limited to 'api4')
-rw-r--r-- | api4/apitestlib.go | 30 | ||||
-rw-r--r-- | api4/channel_test.go | 2 | ||||
-rw-r--r-- | api4/team_test.go | 4 |
3 files changed, 22 insertions, 14 deletions
diff --git a/api4/apitestlib.go b/api4/apitestlib.go index 4620c5f4e..b56934c0a 100644 --- a/api4/apitestlib.go +++ b/api4/apitestlib.go @@ -765,7 +765,7 @@ func (me *TestHelper) MakeUserChannelAdmin(user *model.User, channel *model.Chan if cmr := <-me.App.Srv.Store.Channel().GetMember(channel.Id, user.Id); cmr.Err == nil { cm := cmr.Data.(*model.ChannelMember) - cm.Roles = "channel_admin channel_user" + cm.SchemeAdmin = true if sr := <-me.App.Srv.Store.Channel().UpdateMember(cm); sr.Err != nil { utils.EnableDebugLogForTest() panic(sr.Err) @@ -781,28 +781,36 @@ func (me *TestHelper) MakeUserChannelAdmin(user *model.User, channel *model.Chan func (me *TestHelper) UpdateUserToTeamAdmin(user *model.User, team *model.Team) { utils.DisableDebugLogForTest() - tm := &model.TeamMember{TeamId: team.Id, UserId: user.Id, Roles: model.TEAM_USER_ROLE_ID + " " + model.TEAM_ADMIN_ROLE_ID} - if tmr := <-me.App.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil { + if tmr := <-me.App.Srv.Store.Team().GetMember(team.Id, user.Id); tmr.Err == nil { + tm := tmr.Data.(*model.TeamMember) + tm.SchemeAdmin = true + if sr := <-me.App.Srv.Store.Team().UpdateMember(tm); sr.Err != nil { + utils.EnableDebugLogForTest() + panic(sr.Err) + } + } else { utils.EnableDebugLogForTest() - l4g.Error(tmr.Err.Error()) - l4g.Close() - time.Sleep(time.Second) panic(tmr.Err) } + utils.EnableDebugLogForTest() } func (me *TestHelper) UpdateUserToNonTeamAdmin(user *model.User, team *model.Team) { utils.DisableDebugLogForTest() - tm := &model.TeamMember{TeamId: team.Id, UserId: user.Id, Roles: model.TEAM_USER_ROLE_ID} - if tmr := <-me.App.Srv.Store.Team().UpdateMember(tm); tmr.Err != nil { + if tmr := <-me.App.Srv.Store.Team().GetMember(team.Id, user.Id); tmr.Err == nil { + tm := tmr.Data.(*model.TeamMember) + tm.SchemeAdmin = false + if sr := <-me.App.Srv.Store.Team().UpdateMember(tm); sr.Err != nil { + utils.EnableDebugLogForTest() + panic(sr.Err) + } + } else { utils.EnableDebugLogForTest() - l4g.Error(tmr.Err.Error()) - l4g.Close() - time.Sleep(time.Second) panic(tmr.Err) } + utils.EnableDebugLogForTest() } diff --git a/api4/channel_test.go b/api4/channel_test.go index 4c27e040a..0603afe74 100644 --- a/api4/channel_test.go +++ b/api4/channel_test.go @@ -1388,7 +1388,7 @@ func TestUpdateChannelRoles(t *testing.T) { defer th.TearDown() Client := th.Client - const CHANNEL_ADMIN = "channel_admin channel_user" + const CHANNEL_ADMIN = "channel_user channel_admin" const CHANNEL_MEMBER = "channel_user" // User 1 creates a channel, making them channel admin by default. diff --git a/api4/team_test.go b/api4/team_test.go index cdf201771..3cd9d7d93 100644 --- a/api4/team_test.go +++ b/api4/team_test.go @@ -1672,7 +1672,7 @@ func TestUpdateTeamMemberRoles(t *testing.T) { // user 1 (team admin) tries to demote system admin (not member of a team) _, resp = Client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.SystemAdminUser.Id, TEAM_MEMBER) - CheckBadRequestStatus(t, resp) + CheckNotFoundStatus(t, resp) // user 1 (team admin) demotes system admin (member of a team) th.LinkUserToTeam(th.SystemAdminUser, th.BasicTeam) @@ -1698,7 +1698,7 @@ func TestUpdateTeamMemberRoles(t *testing.T) { // user 1 (team admin) tries to promote a random user _, resp = Client.UpdateTeamMemberRoles(th.BasicTeam.Id, model.NewId(), TEAM_ADMIN) - CheckBadRequestStatus(t, resp) + CheckNotFoundStatus(t, resp) // user 1 (team admin) tries to promote invalid team permission _, resp = Client.UpdateTeamMemberRoles(th.BasicTeam.Id, th.BasicUser.Id, "junk") |