Skip to content

Commit bb055ed

Browse files
Merge dev into master
2 parents e60757f + e423056 commit bb055ed

File tree

15 files changed

+297
-134
lines changed

15 files changed

+297
-134
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
strategy:
99
fail-fast: false
1010
matrix:
11-
go: [1.12, 1.16]
11+
go: [1.15, 1.16, 1.17]
1212

1313
steps:
1414
- name: Set up Go ${{ matrix.go }}

.github/workflows/nightly.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
- name: Set up Go
3232
uses: actions/setup-go@v1
3333
with:
34-
go-version: 1.12
34+
go-version: 1.15
3535

3636
- name: Install golint
3737
run: go get golang.org/x/lint/golint

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
- name: Set up Go
4343
uses: actions/setup-go@v1
4444
with:
45-
go-version: 1.12
45+
go-version: 1.15
4646

4747
- name: Install golint
4848
run: go get golang.org/x/lint/golint

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,10 @@ requests, code review feedback, and also pull requests.
4141

4242
## Supported Go Versions
4343

44-
We support Go v1.12 and higher.
44+
The Admin Go SDK is compatible with at least the three most recent, major Go releases.
45+
We currently support Go v1.15 and higher.
4546
[Continuous integration](https://github.com/firebase/firebase-admin-go/actions) system
46-
tests the code on Go v1.12 through v1.14.
47+
tests the code on Go v1.15 through v1.17.
4748

4849
## Documentation
4950

auth/auth.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,10 @@ func NewClient(ctx context.Context, conf *internal.AuthConfig) (*Client, error)
144144
baseURL = fmt.Sprintf("http://%s/identitytoolkit.googleapis.com", authEmulatorHost)
145145
}
146146
idToolkitV1Endpoint := fmt.Sprintf("%s/v1", baseURL)
147-
idToolkitV2Beta1Endpoint := fmt.Sprintf("%s/v2beta1", baseURL)
147+
idToolkitV2Endpoint := fmt.Sprintf("%s/v2", baseURL)
148148
userManagementEndpoint := idToolkitV1Endpoint
149-
providerConfigEndpoint := idToolkitV2Beta1Endpoint
150-
tenantMgtEndpoint := idToolkitV2Beta1Endpoint
149+
providerConfigEndpoint := idToolkitV2Endpoint
150+
tenantMgtEndpoint := idToolkitV2Endpoint
151151

152152
base := &baseClient{
153153
userManagementEndpoint: userManagementEndpoint,

auth/auth_appengine.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//go:build appengine
12
// +build appengine
23

34
// Copyright 2017 Google Inc. All Rights Reserved.
@@ -20,7 +21,7 @@ import (
2021
"context"
2122

2223
"firebase.google.com/go/v4/internal"
23-
"google.golang.org/appengine"
24+
"google.golang.org/appengine/v2"
2425
)
2526

2627
type aeSigner struct{}

auth/auth_std.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//go:build !appengine
12
// +build !appengine
23

34
// Copyright 2017 Google Inc. All Rights Reserved.

auth/auth_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ import (
3636
)
3737

3838
const (
39-
credEnvVar = "GOOGLE_APPLICATION_CREDENTIALS"
40-
testProjectID = "mock-project-id"
41-
testVersion = "test-version"
42-
defaultIDToolkitV1Endpoint = "https://identitytoolkit.googleapis.com/v1"
43-
defaultIDToolkitV2Beta1Endpoint = "https://identitytoolkit.googleapis.com/v2beta1"
39+
credEnvVar = "GOOGLE_APPLICATION_CREDENTIALS"
40+
testProjectID = "mock-project-id"
41+
testVersion = "test-version"
42+
defaultIDToolkitV1Endpoint = "https://identitytoolkit.googleapis.com/v1"
43+
defaultIDToolkitV2Endpoint = "https://identitytoolkit.googleapis.com/v2"
4444
)
4545

4646
var (
@@ -291,7 +291,7 @@ func TestNewClientExplicitNoAuth(t *testing.T) {
291291
func TestNewClientEmulatorHostEnvVar(t *testing.T) {
292292
emulatorHost := "localhost:9099"
293293
idToolkitV1Endpoint := "http://localhost:9099/identitytoolkit.googleapis.com/v1"
294-
idToolkitV2Beta1Endpoint := "http://localhost:9099/identitytoolkit.googleapis.com/v2beta1"
294+
idToolkitV2Endpoint := "http://localhost:9099/identitytoolkit.googleapis.com/v2"
295295

296296
os.Setenv(emulatorHostEnvVar, emulatorHost)
297297
defer os.Unsetenv(emulatorHostEnvVar)
@@ -305,11 +305,11 @@ func TestNewClientEmulatorHostEnvVar(t *testing.T) {
305305
if baseClient.userManagementEndpoint != idToolkitV1Endpoint {
306306
t.Errorf("baseClient.userManagementEndpoint = %q; want = %q", baseClient.userManagementEndpoint, idToolkitV1Endpoint)
307307
}
308-
if baseClient.providerConfigEndpoint != idToolkitV2Beta1Endpoint {
309-
t.Errorf("baseClient.providerConfigEndpoint = %q; want = %q", baseClient.providerConfigEndpoint, idToolkitV2Beta1Endpoint)
308+
if baseClient.providerConfigEndpoint != idToolkitV2Endpoint {
309+
t.Errorf("baseClient.providerConfigEndpoint = %q; want = %q", baseClient.providerConfigEndpoint, idToolkitV2Endpoint)
310310
}
311-
if baseClient.tenantMgtEndpoint != idToolkitV2Beta1Endpoint {
312-
t.Errorf("baseClient.tenantMgtEndpoint = %q; want = %q", baseClient.tenantMgtEndpoint, idToolkitV2Beta1Endpoint)
311+
if baseClient.tenantMgtEndpoint != idToolkitV2Endpoint {
312+
t.Errorf("baseClient.tenantMgtEndpoint = %q; want = %q", baseClient.tenantMgtEndpoint, idToolkitV2Endpoint)
313313
}
314314
if _, ok := baseClient.signer.(emulatedSigner); !ok {
315315
t.Errorf("baseClient.signer = %#v; want = %#v", baseClient.signer, emulatedSigner{})
@@ -1427,11 +1427,11 @@ func checkBaseClient(client *Client, wantProjectID string) error {
14271427
if baseClient.userManagementEndpoint != defaultIDToolkitV1Endpoint {
14281428
return fmt.Errorf("userManagementEndpoint = %q; want = %q", baseClient.userManagementEndpoint, defaultIDToolkitV1Endpoint)
14291429
}
1430-
if baseClient.providerConfigEndpoint != defaultIDToolkitV2Beta1Endpoint {
1431-
return fmt.Errorf("providerConfigEndpoint = %q; want = %q", baseClient.providerConfigEndpoint, defaultIDToolkitV2Beta1Endpoint)
1430+
if baseClient.providerConfigEndpoint != defaultIDToolkitV2Endpoint {
1431+
return fmt.Errorf("providerConfigEndpoint = %q; want = %q", baseClient.providerConfigEndpoint, defaultIDToolkitV2Endpoint)
14321432
}
1433-
if baseClient.tenantMgtEndpoint != defaultIDToolkitV2Beta1Endpoint {
1434-
return fmt.Errorf("providerConfigEndpoint = %q; want = %q", baseClient.providerConfigEndpoint, defaultIDToolkitV2Beta1Endpoint)
1433+
if baseClient.tenantMgtEndpoint != defaultIDToolkitV2Endpoint {
1434+
return fmt.Errorf("providerConfigEndpoint = %q; want = %q", baseClient.providerConfigEndpoint, defaultIDToolkitV2Endpoint)
14351435
}
14361436
if baseClient.projectID != wantProjectID {
14371437
return fmt.Errorf("projectID = %q; want = %q", baseClient.projectID, wantProjectID)

auth/tenant_mgt.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ type Tenant struct {
4747
DisplayName string `json:"displayName"`
4848
AllowPasswordSignUp bool `json:"allowPasswordSignup"`
4949
EnableEmailLinkSignIn bool `json:"enableEmailLinkSignin"`
50+
EnableAnonymousUsers bool `json:"enableAnonymousUser"`
5051
}
5152

5253
// TenantClient is used for managing users, configuring SAML/OIDC providers, and generating email
@@ -216,6 +217,7 @@ const (
216217
tenantDisplayNameKey = "displayName"
217218
allowPasswordSignUpKey = "allowPasswordSignup"
218219
enableEmailLinkSignInKey = "enableEmailLinkSignin"
220+
enableAnonymousUser = "enableAnonymousUser"
219221
)
220222

221223
// TenantToCreate represents the options used to create a new tenant.
@@ -240,6 +242,11 @@ func (t *TenantToCreate) EnableEmailLinkSignIn(enable bool) *TenantToCreate {
240242
return t.set(enableEmailLinkSignInKey, enable)
241243
}
242244

245+
// EnableAnonymousUsers enables or disables anonymous authentication.
246+
func (t *TenantToCreate) EnableAnonymousUsers(enable bool) *TenantToCreate {
247+
return t.set(enableAnonymousUser, enable)
248+
}
249+
243250
func (t *TenantToCreate) set(key string, value interface{}) *TenantToCreate {
244251
t.ensureParams().Set(key, value)
245252
return t
@@ -275,6 +282,11 @@ func (t *TenantToUpdate) EnableEmailLinkSignIn(enable bool) *TenantToUpdate {
275282
return t.set(enableEmailLinkSignInKey, enable)
276283
}
277284

285+
// EnableAnonymousUsers enables or disables anonymous authentication.
286+
func (t *TenantToUpdate) EnableAnonymousUsers(enable bool) *TenantToUpdate {
287+
return t.set(enableAnonymousUser, enable)
288+
}
289+
278290
func (t *TenantToUpdate) set(key string, value interface{}) *TenantToUpdate {
279291
if t.params == nil {
280292
t.params = make(nestedMap)

auth/tenant_mgt_test.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,14 +1084,16 @@ const tenantResponse = `{
10841084
"name":"projects/mock-project-id/tenants/tenantID",
10851085
"displayName": "Test Tenant",
10861086
"allowPasswordSignup": true,
1087-
"enableEmailLinkSignin": true
1087+
"enableEmailLinkSignin": true,
1088+
"enableAnonymousUser": true
10881089
}`
10891090

10901091
const tenantResponse2 = `{
10911092
"name":"projects/mock-project-id/tenants/tenantID2",
10921093
"displayName": "Test Tenant 2",
10931094
"allowPasswordSignup": true,
1094-
"enableEmailLinkSignin": true
1095+
"enableEmailLinkSignin": true,
1096+
"enableAnonymousUser": true
10951097
}`
10961098

10971099
const tenantNotFoundResponse = `{
@@ -1105,13 +1107,15 @@ var testTenant = &Tenant{
11051107
DisplayName: "Test Tenant",
11061108
AllowPasswordSignUp: true,
11071109
EnableEmailLinkSignIn: true,
1110+
EnableAnonymousUsers: true,
11081111
}
11091112

11101113
var testTenant2 = &Tenant{
11111114
ID: "tenantID2",
11121115
DisplayName: "Test Tenant 2",
11131116
AllowPasswordSignUp: true,
11141117
EnableEmailLinkSignIn: true,
1118+
EnableAnonymousUsers: true,
11151119
}
11161120

11171121
func TestTenant(t *testing.T) {
@@ -1177,7 +1181,8 @@ func TestCreateTenant(t *testing.T) {
11771181
options := (&TenantToCreate{}).
11781182
DisplayName(testTenant.DisplayName).
11791183
AllowPasswordSignUp(testTenant.AllowPasswordSignUp).
1180-
EnableEmailLinkSignIn(testTenant.EnableEmailLinkSignIn)
1184+
EnableEmailLinkSignIn(testTenant.EnableEmailLinkSignIn).
1185+
EnableAnonymousUsers(testTenant.EnableAnonymousUsers)
11811186
tenant, err := client.TenantManager.CreateTenant(context.Background(), options)
11821187
if err != nil {
11831188
t.Fatal(err)
@@ -1191,6 +1196,7 @@ func TestCreateTenant(t *testing.T) {
11911196
"displayName": testTenant.DisplayName,
11921197
"allowPasswordSignup": testTenant.AllowPasswordSignUp,
11931198
"enableEmailLinkSignin": testTenant.EnableEmailLinkSignIn,
1199+
"enableAnonymousUser": testTenant.EnableAnonymousUsers,
11941200
}
11951201
if err := checkCreateTenantRequest(s, wantBody); err != nil {
11961202
t.Fatal(err)
@@ -1225,7 +1231,8 @@ func TestCreateTenantZeroValues(t *testing.T) {
12251231
options := (&TenantToCreate{}).
12261232
DisplayName("").
12271233
AllowPasswordSignUp(false).
1228-
EnableEmailLinkSignIn(false)
1234+
EnableEmailLinkSignIn(false).
1235+
EnableAnonymousUsers(false)
12291236
tenant, err := client.TenantManager.CreateTenant(context.Background(), options)
12301237
if err != nil {
12311238
t.Fatal(err)
@@ -1239,6 +1246,7 @@ func TestCreateTenantZeroValues(t *testing.T) {
12391246
"displayName": "",
12401247
"allowPasswordSignup": false,
12411248
"enableEmailLinkSignin": false,
1249+
"enableAnonymousUser": false,
12421250
}
12431251
if err := checkCreateTenantRequest(s, wantBody); err != nil {
12441252
t.Fatal(err)
@@ -1274,7 +1282,8 @@ func TestUpdateTenant(t *testing.T) {
12741282
options := (&TenantToUpdate{}).
12751283
DisplayName(testTenant.DisplayName).
12761284
AllowPasswordSignUp(testTenant.AllowPasswordSignUp).
1277-
EnableEmailLinkSignIn(testTenant.EnableEmailLinkSignIn)
1285+
EnableEmailLinkSignIn(testTenant.EnableEmailLinkSignIn).
1286+
EnableAnonymousUsers(testTenant.EnableAnonymousUsers)
12781287
tenant, err := client.TenantManager.UpdateTenant(context.Background(), "tenantID", options)
12791288
if err != nil {
12801289
t.Fatal(err)
@@ -1288,8 +1297,9 @@ func TestUpdateTenant(t *testing.T) {
12881297
"displayName": testTenant.DisplayName,
12891298
"allowPasswordSignup": testTenant.AllowPasswordSignUp,
12901299
"enableEmailLinkSignin": testTenant.EnableEmailLinkSignIn,
1300+
"enableAnonymousUser": testTenant.EnableAnonymousUsers,
12911301
}
1292-
wantMask := []string{"allowPasswordSignup", "displayName", "enableEmailLinkSignin"}
1302+
wantMask := []string{"allowPasswordSignup", "displayName", "enableAnonymousUser", "enableEmailLinkSignin"}
12931303
if err := checkUpdateTenantRequest(s, wantBody, wantMask); err != nil {
12941304
t.Fatal(err)
12951305
}
@@ -1327,7 +1337,8 @@ func TestUpdateTenantZeroValues(t *testing.T) {
13271337
options := (&TenantToUpdate{}).
13281338
DisplayName("").
13291339
AllowPasswordSignUp(false).
1330-
EnableEmailLinkSignIn(false)
1340+
EnableEmailLinkSignIn(false).
1341+
EnableAnonymousUsers(false)
13311342
tenant, err := client.TenantManager.UpdateTenant(context.Background(), "tenantID", options)
13321343
if err != nil {
13331344
t.Fatal(err)
@@ -1341,8 +1352,9 @@ func TestUpdateTenantZeroValues(t *testing.T) {
13411352
"displayName": "",
13421353
"allowPasswordSignup": false,
13431354
"enableEmailLinkSignin": false,
1355+
"enableAnonymousUser": false,
13441356
}
1345-
wantMask := []string{"allowPasswordSignup", "displayName", "enableEmailLinkSignin"}
1357+
wantMask := []string{"allowPasswordSignup", "displayName", "enableAnonymousUser", "enableEmailLinkSignin"}
13461358
if err := checkUpdateTenantRequest(s, wantBody, wantMask); err != nil {
13471359
t.Fatal(err)
13481360
}

firebase.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import (
3838
var defaultAuthOverrides = make(map[string]interface{})
3939

4040
// Version of the Firebase Go Admin SDK.
41-
const Version = "4.7.1"
41+
const Version = "4.8.0"
4242

4343
// firebaseEnvName is the name of the environment variable with the Config.
4444
const firebaseEnvName = "FIREBASE_CONFIG"

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
module firebase.google.com/go/v4
22

3-
go 1.11
3+
go 1.15
44

55
require (
6-
cloud.google.com/go/firestore v1.5.0
7-
cloud.google.com/go/storage v1.10.0
8-
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99
9-
google.golang.org/api v0.40.0
10-
google.golang.org/appengine v1.6.7
6+
cloud.google.com/go/firestore v1.6.1
7+
cloud.google.com/go/storage v1.21.0
8+
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a
9+
google.golang.org/api v0.73.0
10+
google.golang.org/appengine/v2 v2.0.1
1111
)

0 commit comments

Comments
 (0)