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  }