Skip to content

Commit 715b5a6

Browse files
authored
fix(auth): Fix Tenant iterator to return the correct sequence of pointers (#323)
Previously, tenant_mgt.go would copy the tenant from the network response, and return a pointer to it. Then it would re-use the same memory for the next tenant, resulting in a list of pointers that all pointed to the last tenant. This change returns pointers to the network response instead (and as a bonus, avoids the copy entirely).
1 parent 04ebfd5 commit 715b5a6

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

auth/tenant_mgt.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,9 +343,9 @@ func (it *TenantIterator) fetch(pageSize int, pageToken string) (string, error)
343343
return "", err
344344
}
345345

346-
for _, tenant := range result.Tenants {
347-
tenant.ID = extractResourceID(tenant.ID)
348-
it.tenants = append(it.tenants, &tenant)
346+
for i := range result.Tenants {
347+
result.Tenants[i].ID = extractResourceID(result.Tenants[i].ID)
348+
it.tenants = append(it.tenants, &result.Tenants[i])
349349
}
350350

351351
it.pageInfo.Token = result.NextPageToken

auth/tenant_mgt_test.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,6 +1086,13 @@ const tenantResponse = `{
10861086
"enableEmailLinkSignin": true
10871087
}`
10881088

1089+
const tenantResponse2 = `{
1090+
"name":"projects/mock-project-id/tenants/tenantID2",
1091+
"displayName": "Test Tenant 2",
1092+
"allowPasswordSignup": true,
1093+
"enableEmailLinkSignin": true
1094+
}`
1095+
10891096
const tenantNotFoundResponse = `{
10901097
"error": {
10911098
"message": "TENANT_NOT_FOUND"
@@ -1099,6 +1106,13 @@ var testTenant = &Tenant{
10991106
EnableEmailLinkSignIn: true,
11001107
}
11011108

1109+
var testTenant2 = &Tenant{
1110+
ID: "tenantID2",
1111+
DisplayName: "Test Tenant 2",
1112+
AllowPasswordSignUp: true,
1113+
EnableEmailLinkSignIn: true,
1114+
}
1115+
11021116
func TestTenant(t *testing.T) {
11031117
s := echoServer([]byte(tenantResponse), t)
11041118
defer s.Close()
@@ -1423,13 +1437,13 @@ func TestTenants(t *testing.T) {
14231437
],
14241438
"nextPageToken": ""
14251439
}`
1426-
response := fmt.Sprintf(template, tenantResponse, tenantResponse, tenantResponse)
1440+
response := fmt.Sprintf(template, tenantResponse, tenantResponse2, tenantResponse)
14271441
s := echoServer([]byte(response), t)
14281442
defer s.Close()
14291443

14301444
want := []*Tenant{
14311445
testTenant,
1432-
testTenant,
1446+
testTenant2,
14331447
testTenant,
14341448
}
14351449
wantPath := "/projects/mock-project-id/tenants"

0 commit comments

Comments
 (0)