| // Copyright 2021 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build go1.17 |
| // +build go1.17 |
| |
| package store |
| |
| import ( |
| "context" |
| "flag" |
| "fmt" |
| "math/rand" |
| "os/user" |
| "testing" |
| "time" |
| ) |
| |
| var ( |
| project = flag.String("project", "", "GCP project for Firestore") |
| impersonate = flag.String("impersonate", "", "service account for Firestore") |
| ) |
| |
| func TestFireStore(t *testing.T) { |
| if *project == "" { |
| t.Skip("missing -project") |
| } |
| ctx := context.Background() |
| // Create a client with a unique namespace for this test. |
| username := "unknown" |
| if u, err := user.Current(); err == nil { |
| username = u.Username |
| } |
| rand.Seed(time.Now().UnixNano()) |
| r := rand.Intn(1000) |
| namespace := fmt.Sprintf("testing-%s-%d", username, r) |
| t.Logf("testing in namespace %s", namespace) |
| |
| fs, err := NewFireStore(ctx, *project, namespace, *impersonate) |
| if err != nil { |
| t.Fatal(err) |
| } |
| // Delete the namespace when we're done. |
| defer func() { |
| if err := fs.Clear(ctx); err != nil { |
| t.Log(err) |
| } |
| }() |
| |
| testStore(t, fs) |
| } |