github.com/aiven/aiven-go-client@v1.36.0/account_team_members_test.go (about) 1 package aiven 2 3 import ( 4 "encoding/json" 5 "net/http" 6 "net/http/httptest" 7 "reflect" 8 "testing" 9 ) 10 11 func setupAccountsTeamMembersTestCase(t *testing.T) (*Client, func(t *testing.T)) { 12 t.Log("setup Account Team Members test case") 13 14 const ( 15 UserName = "test@aiven.io" 16 UserPassword = "testabcd" 17 AccessToken = "some-random-token" 18 ) 19 20 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 21 if r.URL.Path == "/userauth" { 22 w.Header().Set("Content-Type", "application/json") 23 w.WriteHeader(http.StatusOK) 24 err := json.NewEncoder(w).Encode(authResponse{ 25 Token: AccessToken, 26 State: "active", 27 }) 28 29 if err != nil { 30 t.Error(err) 31 } 32 return 33 } 34 35 if r.URL.Path == "/account/a28707e316df/team/at28707ea77e2/members" { 36 w.Header().Set("Content-Type", "application/json") 37 w.WriteHeader(http.StatusOK) 38 err := json.NewEncoder(w).Encode(AccountTeamMembersResponse{ 39 Members: []AccountTeamMember{ 40 { 41 TeamId: "at28707ea77e2", 42 TeamName: "Account Owners", 43 RealName: "Test User", 44 UserId: "u286c52034d3", 45 UserEmail: "test@example.com", 46 CreateTime: getTime(t), 47 UpdateTime: getTime(t), 48 }, 49 }, 50 }) 51 52 if err != nil { 53 t.Error(err) 54 } 55 return 56 } 57 58 if r.URL.Path == "/account/a28707e316df/team/at28707ea77e2/member/u286c52034d3" { 59 w.Header().Set("Content-Type", "application/json") 60 w.WriteHeader(http.StatusOK) 61 err := json.NewEncoder(w).Encode(AccountTeamMembersResponse{}) 62 63 if err != nil { 64 t.Error(err) 65 } 66 return 67 } 68 69 })) 70 71 apiUrl = ts.URL 72 73 c, err := NewUserClient(UserName, UserPassword, "aiven-go-client-test/"+Version()) 74 if err != nil { 75 t.Fatalf("user authentication error: %s", err) 76 } 77 78 return c, func(t *testing.T) { 79 t.Log("teardown Accounts Team Members test case") 80 ts.Close() 81 } 82 } 83 84 func TestAccountTeamMembersHandler_List(t *testing.T) { 85 c, tearDown := setupAccountsTeamMembersTestCase(t) 86 defer tearDown(t) 87 88 type fields struct { 89 client *Client 90 } 91 type args struct { 92 accountId string 93 teamId string 94 } 95 tests := []struct { 96 name string 97 fields fields 98 args args 99 want *AccountTeamMembersResponse 100 wantErr bool 101 }{ 102 { 103 "normal", 104 fields{client: c}, 105 args{ 106 accountId: "a28707e316df", 107 teamId: "at28707ea77e2", 108 }, 109 &AccountTeamMembersResponse{ 110 Members: []AccountTeamMember{ 111 { 112 TeamId: "at28707ea77e2", 113 TeamName: "Account Owners", 114 RealName: "Test User", 115 UserId: "u286c52034d3", 116 UserEmail: "test@example.com", 117 CreateTime: getTime(t), 118 UpdateTime: getTime(t), 119 }, 120 }, 121 }, 122 false, 123 }, 124 { 125 "error-empty-account-id", 126 fields{client: c}, 127 args{ 128 accountId: "", 129 teamId: "at28707ea77e2", 130 }, 131 nil, 132 true, 133 }, 134 { 135 "error-empty-team-id", 136 fields{client: c}, 137 args{ 138 accountId: "a28707e316df", 139 teamId: "", 140 }, 141 nil, 142 true, 143 }, 144 } 145 for _, tt := range tests { 146 t.Run(tt.name, func(t *testing.T) { 147 h := AccountTeamMembersHandler{ 148 client: tt.fields.client, 149 } 150 got, err := h.List(tt.args.accountId, tt.args.teamId) 151 if (err != nil) != tt.wantErr { 152 t.Errorf("List() error = %v, wantErr %v", err, tt.wantErr) 153 return 154 } 155 if !reflect.DeepEqual(got, tt.want) { 156 t.Errorf("List() got = %v, want %v", got, tt.want) 157 } 158 }) 159 } 160 } 161 162 func TestAccountTeamMembersHandler_Delete(t *testing.T) { 163 c, tearDown := setupAccountsTeamMembersTestCase(t) 164 defer tearDown(t) 165 166 type fields struct { 167 client *Client 168 } 169 type args struct { 170 accountId string 171 teamId string 172 userId string 173 } 174 tests := []struct { 175 name string 176 fields fields 177 args args 178 wantErr bool 179 }{ 180 { 181 "normal", 182 fields{client: c}, 183 args{ 184 accountId: "a28707e316df", 185 teamId: "at28707ea77e2", 186 userId: "u286c52034d3", 187 }, 188 false, 189 }, 190 { 191 "error-empty-account-id", 192 fields{client: c}, 193 args{ 194 accountId: "", 195 teamId: "at28707ea77e2", 196 userId: "u286c52034d3", 197 }, 198 true, 199 }, 200 { 201 "error-empty-team-id", 202 fields{client: c}, 203 args{ 204 accountId: "a28707e316df", 205 teamId: "", 206 userId: "u286c52034d3", 207 }, 208 true, 209 }, 210 { 211 "error-empty-user-id", 212 fields{client: c}, 213 args{ 214 accountId: "a28707e316df", 215 teamId: "at28707ea77e2", 216 userId: "", 217 }, 218 true, 219 }, 220 } 221 for _, tt := range tests { 222 t.Run(tt.name, func(t *testing.T) { 223 h := AccountTeamMembersHandler{ 224 client: tt.fields.client, 225 } 226 if err := h.Delete(tt.args.accountId, tt.args.teamId, tt.args.userId); (err != nil) != tt.wantErr { 227 t.Errorf("Delete() error = %v, wantErr %v", err, tt.wantErr) 228 } 229 }) 230 } 231 } 232 233 func TestAccountTeamMembersHandler_Invite(t *testing.T) { 234 c, tearDown := setupAccountsTeamMembersTestCase(t) 235 defer tearDown(t) 236 237 type fields struct { 238 client *Client 239 } 240 type args struct { 241 accountId string 242 teamId string 243 email string 244 } 245 tests := []struct { 246 name string 247 fields fields 248 args args 249 wantErr bool 250 }{ 251 { 252 "normal", 253 fields{client: c}, 254 args{ 255 accountId: "a28707e316df", 256 teamId: "at28707ea77e2", 257 email: "test@example.com", 258 }, 259 false, 260 }, 261 { 262 "error-empty-account-id", 263 fields{client: c}, 264 args{ 265 accountId: "", 266 teamId: "at28707ea77e2", 267 email: "test@example.com", 268 }, 269 true, 270 }, 271 { 272 "error-empty-team-id", 273 fields{client: c}, 274 args{ 275 accountId: "at28707ea77e2", 276 teamId: "", 277 email: "test@example.com", 278 }, 279 true, 280 }, 281 { 282 "error-empty-email", 283 fields{client: c}, 284 args{ 285 accountId: "at28707ea77e2", 286 teamId: "at28707ea77e2", 287 email: "", 288 }, 289 true, 290 }, 291 } 292 for _, tt := range tests { 293 t.Run(tt.name, func(t *testing.T) { 294 h := AccountTeamMembersHandler{ 295 client: tt.fields.client, 296 } 297 if err := h.Invite(tt.args.accountId, tt.args.teamId, tt.args.email); (err != nil) != tt.wantErr { 298 t.Errorf("Create() error = %v, wantErr %v", err, tt.wantErr) 299 } 300 }) 301 } 302 }