github.com/clerkinc/clerk-sdk-go@v1.49.1/tests/integration/users_test.go (about) 1 //go:build integration 2 // +build integration 3 4 package integration 5 6 import ( 7 "encoding/json" 8 "testing" 9 10 "github.com/clerkinc/clerk-sdk-go/clerk" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 type addressDetails struct { 15 Street string `json:"street"` 16 Number string `json:"number"` 17 } 18 19 type userAddress struct { 20 Address addressDetails `json:"address"` 21 } 22 23 type userAppAndContactID struct { 24 AppID int `json:"app_id"` 25 ContactID int `json:"contact_id"` 26 } 27 28 type userEvent struct { 29 ViewedProfile bool `json:"viewed_profile"` 30 } 31 32 func TestUsers(t *testing.T) { 33 client := createClient() 34 35 users, err := client.Users().ListAll(clerk.ListAllUsersParams{}) 36 if err != nil { 37 t.Fatalf("Users.ListAll returned error: %v", err) 38 } 39 if users == nil { 40 t.Fatalf("Users.ListAll returned nil") 41 } 42 43 userCount, err := client.Users().Count(clerk.ListAllUsersParams{}) 44 if err != nil { 45 t.Fatalf("Users.Count returned error: %v", err) 46 } 47 if userCount.TotalCount == 0 { 48 t.Fatalf("Users.Count returned 0, expected %d", len(users)) 49 } 50 51 for i, user := range users { 52 userId := user.ID 53 user, err := client.Users().Read(userId) 54 if err != nil { 55 t.Fatalf("Users.Read returned error: %v", err) 56 } 57 if user == nil { 58 t.Fatalf("Users.Read returned nil") 59 } 60 61 updateRequest := clerk.UpdateUser{ 62 FirstName: user.FirstName, 63 LastName: user.LastName, 64 PublicMetadata: userAddress{Address: addressDetails{ 65 Street: "Fifth Avenue", 66 Number: "890", 67 }}, 68 PrivateMetadata: userAppAndContactID{AppID: i}, 69 UnsafeMetadata: userEvent{ 70 ViewedProfile: true, 71 }, 72 } 73 updatedUser, err := client.Users().Update(userId, &updateRequest) 74 if err != nil { 75 t.Fatalf("Users.Update returned error: %v", err) 76 } 77 if updatedUser == nil { 78 t.Errorf("Users.Update returned nil") 79 } 80 81 privateMetadata := userAppAndContactID{ContactID: i} 82 privateMetadataJSON, _ := json.Marshal(privateMetadata) 83 84 updatedUser, err = client.Users().UpdateMetadata(userId, &clerk.UpdateUserMetadata{ 85 PrivateMetadata: privateMetadataJSON, 86 }) 87 if err != nil { 88 t.Fatalf("Users.UpdateMetadata returned error: %v", err) 89 } 90 if updatedUser == nil { 91 t.Errorf("Users.UpdateMetadata returned nil") 92 } 93 94 updatedUser, err = client.Users().Ban(userId) 95 if err != nil { 96 t.Fatalf("Users.Ban returned error: %v", err) 97 } 98 assert.True(t, updatedUser.Banned) 99 100 updatedUser, err = client.Users().Unban(userId) 101 if err != nil { 102 t.Fatalf("Users.Unban returned error: %v", err) 103 } 104 assert.False(t, updatedUser.Banned) 105 106 updatedUser, err = client.Users().Lock(userId) 107 if err != nil { 108 t.Fatalf("Users.Lock returned error: %v", err) 109 } 110 assert.True(t, updatedUser.Locked) 111 112 updatedUser, err = client.Users().Unlock(userId) 113 if err != nil { 114 t.Fatalf("Users.Unlock returned error: %v", err) 115 } 116 assert.False(t, updatedUser.Locked) 117 } 118 119 // Should return all memberships of a user 120 newOrganization, err := client.Organizations().Create(clerk.CreateOrganizationParams{ 121 Name: "my-org", 122 CreatedBy: users[0].ID, 123 }) 124 if err != nil { 125 t.Fatal(err) 126 } 127 128 organizationMemberships, err := client.Users().ListMemberships(clerk.ListMembershipsParams{UserID: users[0].ID}) 129 assert.Equal(t, len(organizationMemberships.Data), 2) 130 assert.Equal(t, organizationMemberships.TotalCount, int64(2)) 131 assert.Equal(t, newOrganization.ID, organizationMemberships.Data[0].Organization.ID) 132 133 // delete previous created organization to not create conflict with future tests 134 deleteResponse, err := client.Organizations().Delete(newOrganization.ID) 135 if err != nil { 136 t.Fatal(err) 137 } 138 assert.Equal(t, newOrganization.ID, deleteResponse.ID) 139 }