mirror of
https://git.vectorsigma.ru/public/atlantis.git
synced 2026-08-06 20:58:45 +00:00
181 lines
4.4 KiB
Go
181 lines
4.4 KiB
Go
package slack
|
|
|
|
import (
|
|
"net/http"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
type userGroupsHandler struct {
|
|
gotParams map[string]string
|
|
response string
|
|
}
|
|
|
|
func newUserGroupsHandler() *userGroupsHandler {
|
|
return &userGroupsHandler{
|
|
gotParams: make(map[string]string),
|
|
response: `{
|
|
"ok": true,
|
|
"usergroup": {
|
|
"id": "S0615G0KT",
|
|
"team_id": "T060RNRCH",
|
|
"is_usergroup": true,
|
|
"name": "Marketing Team",
|
|
"description": "Marketing gurus, PR experts and product advocates.",
|
|
"handle": "marketing-team",
|
|
"is_external": false,
|
|
"date_create": 1446746793,
|
|
"date_update": 1446746793,
|
|
"date_delete": 0,
|
|
"auto_type": null,
|
|
"created_by": "U060RNRCZ",
|
|
"updated_by": "U060RNRCZ",
|
|
"deleted_by": null,
|
|
"prefs": {
|
|
"channels": [
|
|
|
|
],
|
|
"groups": [
|
|
|
|
]
|
|
},
|
|
"user_count": 0
|
|
}
|
|
}`,
|
|
}
|
|
}
|
|
|
|
func (ugh *userGroupsHandler) accumulateFormValue(k string, r *http.Request) {
|
|
if v := r.FormValue(k); v != "" {
|
|
ugh.gotParams[k] = v
|
|
}
|
|
}
|
|
|
|
func (ugh *userGroupsHandler) handler(w http.ResponseWriter, r *http.Request) {
|
|
ugh.accumulateFormValue("name", r)
|
|
ugh.accumulateFormValue("description", r)
|
|
ugh.accumulateFormValue("handle", r)
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Write([]byte(ugh.response))
|
|
}
|
|
|
|
func TestCreateUserGroup(t *testing.T) {
|
|
once.Do(startServer)
|
|
SLACK_API = "http://" + serverAddr + "/"
|
|
api := New("testing-token")
|
|
|
|
tests := []struct {
|
|
userGroup UserGroup
|
|
wantParams map[string]string
|
|
}{
|
|
{
|
|
UserGroup{
|
|
Name: "Marketing Team",
|
|
Description: "Marketing gurus, PR experts and product advocates.",
|
|
Handle: "marketing-team"},
|
|
map[string]string{
|
|
"name": "Marketing Team",
|
|
"description": "Marketing gurus, PR experts and product advocates.",
|
|
"handle": "marketing-team",
|
|
},
|
|
},
|
|
}
|
|
|
|
var rh *userGroupsHandler
|
|
http.HandleFunc("/usergroups.create", func(w http.ResponseWriter, r *http.Request) { rh.handler(w, r) })
|
|
|
|
for i, test := range tests {
|
|
rh = newUserGroupsHandler()
|
|
_, err := api.CreateUserGroup(test.userGroup)
|
|
if err != nil {
|
|
t.Fatalf("%d: Unexpected error: %s", i, err)
|
|
}
|
|
if !reflect.DeepEqual(rh.gotParams, test.wantParams) {
|
|
t.Errorf("%d: Got params %#v, want %#v", i, rh.gotParams, test.wantParams)
|
|
}
|
|
}
|
|
}
|
|
|
|
func getUserGroups(rw http.ResponseWriter, r *http.Request) {
|
|
rw.Header().Set("Content-Type", "application/json")
|
|
response := []byte(`{
|
|
"ok": true,
|
|
"usergroups": [
|
|
{
|
|
"id": "S0614TZR7",
|
|
"team_id": "T060RNRCH",
|
|
"is_usergroup": true,
|
|
"name": "Team Admins",
|
|
"description": "A group of all Administrators on your team.",
|
|
"handle": "admins",
|
|
"is_external": false,
|
|
"date_create": 1446598059,
|
|
"date_update": 1446670362,
|
|
"date_delete": 0,
|
|
"auto_type": "admin",
|
|
"created_by": "USLACKBOT",
|
|
"updated_by": "U060RNRCZ",
|
|
"deleted_by": null,
|
|
"prefs": {
|
|
"channels": [
|
|
"channel1",
|
|
"channel2"
|
|
],
|
|
"groups": [
|
|
"group1",
|
|
"group2",
|
|
"group3"
|
|
]
|
|
},
|
|
"user_count": 2
|
|
}
|
|
]
|
|
}`)
|
|
rw.Write(response)
|
|
}
|
|
|
|
func TestGetUserGroups(t *testing.T) {
|
|
http.HandleFunc("/usergroups.list", getUserGroups)
|
|
|
|
once.Do(startServer)
|
|
SLACK_API = "http://" + serverAddr + "/"
|
|
api := New("testing-token")
|
|
|
|
userGroups, err := api.GetUserGroups()
|
|
if err != nil {
|
|
t.Errorf("Unexpected error: %s", err)
|
|
return
|
|
}
|
|
|
|
// t.Fatal refers to -> t.Errorf & return
|
|
if len(userGroups) != 1 {
|
|
t.Fatal(ErrIncorrectResponse)
|
|
}
|
|
|
|
S0614TZR7 := UserGroup{
|
|
ID: "S0614TZR7",
|
|
TeamID: "T060RNRCH",
|
|
IsUserGroup: true,
|
|
Name: "Team Admins",
|
|
Description: "A group of all Administrators on your team.",
|
|
Handle: "admins",
|
|
IsExternal: false,
|
|
DateCreate: 1446598059,
|
|
DateUpdate: 1446670362,
|
|
DateDelete: 0,
|
|
AutoType: "admin",
|
|
CreatedBy: "USLACKBOT",
|
|
UpdatedBy: "U060RNRCZ",
|
|
DeletedBy: "",
|
|
Prefs: UserGroupPrefs{
|
|
Channels: []string{"channel1", "channel2"},
|
|
Groups: []string{"group1", "group2", "group3"},
|
|
},
|
|
UserCount: 2,
|
|
}
|
|
|
|
if !reflect.DeepEqual(userGroups[0], S0614TZR7) {
|
|
t.Errorf("Got %#v, want %#v", userGroups[0], S0614TZR7)
|
|
}
|
|
}
|