[APIv4] add getChannelMembersTimezone (#9286)

* add getChannelMembersTimezone

* update per feedback review

* add delimeter to error
Этот коммит содержится в:
Carlos Tadeu Panato Junior
2018-10-13 12:35:57 +02:00
коммит произвёл GitHub
родитель e87965f39d
Коммит 908ed5555f
11 изменённых файлов: 203 добавлений и 7 удалений

Просмотреть файл

@@ -33,7 +33,7 @@ func (api *API) InitChannel() {
api.BaseRoutes.Channel.Handle("", api.ApiSessionRequired(deleteChannel)).Methods("DELETE")
api.BaseRoutes.Channel.Handle("/stats", api.ApiSessionRequired(getChannelStats)).Methods("GET")
api.BaseRoutes.Channel.Handle("/pinned", api.ApiSessionRequired(getPinnedPosts)).Methods("GET")
api.BaseRoutes.Channel.Handle("/timezones", api.ApiSessionRequired(getChannelMembersTimezones)).Methods("GET")
api.BaseRoutes.ChannelForUser.Handle("/unread", api.ApiSessionRequired(getChannelUnread)).Methods("GET")
api.BaseRoutes.ChannelByName.Handle("", api.ApiSessionRequired(getChannelByName)).Methods("GET")
@@ -821,6 +821,26 @@ func getChannelMembers(c *Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte(members.ToJson()))
}
func getChannelMembersTimezones(c *Context, w http.ResponseWriter, r *http.Request) {
c.RequireChannelId()
if c.Err != nil {
return
}
if !c.App.SessionHasPermissionToChannel(c.Session, c.Params.ChannelId, model.PERMISSION_READ_CHANNEL) {
c.SetPermissionError(model.PERMISSION_READ_CHANNEL)
return
}
membersTimezones, err := c.App.GetChannelMembersTimezones(c.Params.ChannelId)
if err != nil {
c.Err = err
return
}
w.Write([]byte(model.ArrayToJson(membersTimezones)))
}
func getChannelMembersByIds(c *Context, w http.ResponseWriter, r *http.Request) {
c.RequireChannelId()
if c.Err != nil {

Просмотреть файл

@@ -2335,3 +2335,52 @@ func TestUpdateChannelScheme(t *testing.T) {
_, resp = th.SystemAdminClient.UpdateChannelScheme(channel.Id, channelScheme.Id)
CheckUnauthorizedStatus(t, resp)
}
func TestGetChannelMembersTimezones(t *testing.T) {
th := Setup().InitBasic().InitSystemAdmin()
defer th.TearDown()
Client := th.Client
user := th.BasicUser
user.Timezone["useAutomaticTimezone"] = "false"
user.Timezone["manualTimezone"] = "XOXO/BLABLA"
_, resp := Client.UpdateUser(user)
CheckNoError(t, resp)
user2 := th.BasicUser2
user2.Timezone["automaticTimezone"] = "NoWhere/Island"
_, resp = th.SystemAdminClient.UpdateUser(user2)
CheckNoError(t, resp)
timezone, resp := Client.GetChannelMembersTimezones(th.BasicChannel.Id)
CheckNoError(t, resp)
if len(timezone) != 2 {
t.Fatal("should return 2 timezones")
}
//both users have same timezone
user2.Timezone["automaticTimezone"] = "XOXO/BLABLA"
_, resp = th.SystemAdminClient.UpdateUser(user2)
CheckNoError(t, resp)
timezone, resp = Client.GetChannelMembersTimezones(th.BasicChannel.Id)
CheckNoError(t, resp)
if len(timezone) != 1 {
t.Fatal("should return 1 timezone")
}
//no timezone set should return empty
user2.Timezone["automaticTimezone"] = ""
_, resp = th.SystemAdminClient.UpdateUser(user2)
CheckNoError(t, resp)
user.Timezone["manualTimezone"] = ""
_, resp = Client.UpdateUser(user)
timezone, resp = Client.GetChannelMembersTimezones(th.BasicChannel.Id)
CheckNoError(t, resp)
if len(timezone) > 0 {
t.Fatal("should return 0 timezone")
}
}