Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
09fc70b
Renamed some tests and test parameters for clarity, and adhere to Go …
hiranya911 Jan 17, 2018
c24cb17
clean unused types (#76)
avishalom Jan 19, 2018
fb6fa29
Create CHANGELOG.md (#75) (#79)
avishalom Jan 29, 2018
aae4f93
change instance ID format (#82)
avishalom Feb 1, 2018
56a7312
Import context from golang.org/x/net/ for 1.6 compatibility (#87)
avishalom Feb 8, 2018
c764f49
Document non existing name in integration tests for iid (#85)
avishalom Feb 8, 2018
06eb0e0
Revoke Tokens (#77)
avishalom Feb 13, 2018
3f7b4ba
Firebase Cloud Messaging API (#81)
hiranya911 Feb 13, 2018
82606fb
Merged with master
hiranya911 Feb 13, 2018
a053b99
Bumped version to 2.5.0 (#90)
hiranya911 Feb 14, 2018
9f91451
Merge branch 'master' into dev
hiranya911 Feb 15, 2018
0b3ac34
Merge branch 'master' into dev
hiranya911 Feb 16, 2018
fd78f9d
Lint (#96)
chemidy Feb 18, 2018
3a386a4
Doc (#97)
chemidy Feb 18, 2018
0dd57f9
Merge branch 'master' into dev
hiranya911 Feb 20, 2018
387fa39
add travis build for go versions 1.7.x -> 1.10.x (#98)
chemidy Feb 26, 2018
9d2e4a8
Import context from standard package (#101)
avishalom Feb 27, 2018
c9be1e9
Firebase Database API (#92)
hiranya911 Feb 28, 2018
3a49e80
Handling FCM canonical error codes (#103)
hiranya911 Feb 28, 2018
f03d5a6
Formatting test file with gofmt (#104)
hiranya911 Feb 28, 2018
f0be2f4
Bumped version to 2.6.0 (#105)
hiranya911 Feb 28, 2018
2331e41
Merge branch 'master' into dev
hiranya911 Feb 28, 2018
04299fa
Formatting (simplification) changes (#107)
hiranya911 Mar 1, 2018
07d3484
Checking for unformatted files in CI (#108)
hiranya911 Mar 1, 2018
0bbfc6c
Document Minimum Go Version (#111)
hiranya911 Mar 9, 2018
cf5cb07
Fix invalid endpoint URL for topic unsubscribe (#114)
michaljemala Mar 12, 2018
31b566d
Fix error message for missing user (#113)
avishalom Mar 14, 2018
a3ce7c8
Update CHANGELOG.md (#117)
hiranya911 Mar 15, 2018
9bd56f9
Removing unused member from auth.Client (#118)
hiranya911 Mar 15, 2018
0c849e9
Support Go 1.6 (#120)
tbpg Mar 15, 2018
eae7451
Bumped version to 2.6.1 (#121)
avishalom Mar 15, 2018
98f50a2
Changlog updates (#123)
avishalom Mar 15, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .travis.gofmt.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
if [[ ! -z "$(gofmt -l -s .)" ]]; then
echo "Go code is not formatted:"
gofmt -d -s .
exit 1
fi
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
language: go

go:
- 1.6.x
- 1.7.x
- 1.8.x
- 1.9.x
Expand All @@ -26,5 +27,6 @@ install:

script:
- golint -set_exit_status $(go list ./...)
- ./.travis.gofmt.sh
- go test -v -race -test.short ./... # Run tests with the race detector.
- go vet -v ./... # Run Go static analyzer.
10 changes: 9 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
# Unreleased

-
# v2.6.1

- [added] Added support for Go 1.6.
- [changed] Fixed a bug in the
[`UnsubscribeFromTopic()`](https://godoc.org/firebase.google.com/go/messaging#Client.UnsubscribeFromTopic)
function.
- [changed] Improved the error message returned by `GetUser()`,
`GetUserByEmail()` and `GetUserByPhoneNumber()` APIs in
[`auth`](https://godoc.org/firebase.google.com/go/auth) package.

# v2.6.0

Expand Down
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,13 @@ go get firebase.google.com/go

Please refer to the [CONTRIBUTING page](./CONTRIBUTING.md) for more information
about how you can contribute to this project. We welcome bug reports, feature
requests, code review feedback, and also pull requests.
requests, code review feedback, and also pull requests.

## Supported Go Versions

We support Go v1.6 and higher.
[Continuous integration](https://travis-ci.org/firebase/firebase-admin-go) system
tests the code on Go v1.6 through v1.10.

## Documentation

Expand Down
5 changes: 2 additions & 3 deletions auth/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
package auth

import (
"context"
"crypto/rsa"
"crypto/x509"
"encoding/json"
Expand All @@ -25,6 +24,8 @@ import (
"fmt"
"strings"

"golang.org/x/net/context"

"firebase.google.com/go/internal"
"google.golang.org/api/identitytoolkit/v3"
"google.golang.org/api/transport"
Expand Down Expand Up @@ -62,7 +63,6 @@ type Token struct {
// Client facilitates generating custom JWT tokens for Firebase clients, and verifying ID tokens issued
// by Firebase backend services.
type Client struct {
hc *internal.HTTPClient
is *identitytoolkit.Service
ks keySource
projectID string
Expand Down Expand Up @@ -123,7 +123,6 @@ func NewClient(ctx context.Context, c *internal.AuthConfig) (*Client, error) {
}

return &Client{
hc: &internal.HTTPClient{Client: hc},
is: is,
ks: newHTTPKeySource(googleCertURL, hc),
projectID: c.ProjectID,
Expand Down
2 changes: 1 addition & 1 deletion auth/auth_appengine.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package auth

import (
"context"
"golang.org/x/net/context"

"google.golang.org/appengine"
)
Expand Down
2 changes: 1 addition & 1 deletion auth/auth_std.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package auth

import "context"
import "golang.org/x/net/context"

func newSigner(ctx context.Context) (signer, error) {
return serviceAcctSigner{}, nil
Expand Down
3 changes: 2 additions & 1 deletion auth/auth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
package auth

import (
"context"
"encoding/json"
"errors"
"fmt"
Expand All @@ -26,6 +25,8 @@ import (
"testing"
"time"

"golang.org/x/net/context"

"golang.org/x/oauth2/google"

"google.golang.org/api/option"
Expand Down
5 changes: 3 additions & 2 deletions auth/user_mgt.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
package auth

import (
"context"
"encoding/json"
"fmt"
"net/http"
Expand All @@ -24,6 +23,8 @@ import (
"strings"
"time"

"golang.org/x/net/context"

"google.golang.org/api/identitytoolkit/v3"
"google.golang.org/api/iterator"
)
Expand Down Expand Up @@ -567,7 +568,7 @@ func (c *Client) getUser(ctx context.Context, request *identitytoolkit.Identityt
return nil, err
}
if len(resp.Users) == 0 {
return nil, fmt.Errorf("cannot find user from params: %v", request)
return nil, fmt.Errorf("cannot find user given params: id:%v, phone:%v, email: %v", request.LocalId, request.PhoneNumber, request.Email)
}

eu, err := makeExportedUser(resp.Users[0])
Expand Down
28 changes: 18 additions & 10 deletions auth/user_mgt_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ package auth

import (
"bytes"
"context"
"encoding/json"
"fmt"
"io/ioutil"
Expand All @@ -27,6 +26,8 @@ import (
"testing"
"time"

"golang.org/x/net/context"

"firebase.google.com/go/internal"

"golang.org/x/oauth2"
Expand Down Expand Up @@ -148,17 +149,24 @@ func TestGetNonExistingUser(t *testing.T) {
s := echoServer([]byte(resp), t)
defer s.Close()

user, err := s.Client.GetUser(context.Background(), "ignored_id")
if user != nil || err == nil {
t.Errorf("GetUser(non-existing) = (%v, %v); want = (nil, error)", user, err)
want := "cannot find user given params: id:[%s], phone:[%s], email: [%s]"

we := fmt.Sprintf(want, "id-nonexisting", "", "")
user, err := s.Client.GetUser(context.Background(), "id-nonexisting")
if user != nil || err == nil || err.Error() != we {
t.Errorf("GetUser(non-existing) = (%v, %q); want = (nil, %q)", user, err, we)
}
user, err = s.Client.GetUserByEmail(context.Background(), "[email protected]")
if user != nil || err == nil {
t.Errorf("GetUserByEmail(non-existing) = (%v, %v); want = (nil, error)", user, err)

we = fmt.Sprintf(want, "", "", "[email protected]")
user, err = s.Client.GetUserByEmail(context.Background(), "[email protected]")
if user != nil || err == nil || err.Error() != we {
t.Errorf("GetUserByEmail(non-existing) = (%v, %q); want = (nil, %q)", user, err, we)
}
user, err = s.Client.GetUserByPhoneNumber(context.Background(), "+1234567890")
if user != nil || err == nil {
t.Errorf("GetUserPhoneNumber(non-existing) = (%v, %v); want = (nil, error)", user, err)

we = fmt.Sprintf(want, "", "+12345678901", "")
user, err = s.Client.GetUserByPhoneNumber(context.Background(), "+12345678901")
if user != nil || err == nil || err.Error() != we {
t.Errorf("GetUserPhoneNumber(non-existing) = (%v, %q); want = (nil, %q)", user, err, we)
}
}

Expand Down
2 changes: 1 addition & 1 deletion db/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ func TestNewClient(t *testing.T) {
func TestNewClientAuthOverrides(t *testing.T) {
cases := []map[string]interface{}{
nil,
map[string]interface{}{"uid": "user1"},
{"uid": "user1"},
}
for _, tc := range cases {
c, err := NewClient(context.Background(), &internal.DatabaseConfig{
Expand Down
2 changes: 1 addition & 1 deletion db/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ func (q *queryNodeImpl) Key() string {
if q.CompKey.Str != nil {
return *q.CompKey.Str
}
// Numeric keys in queryNodeImpl are always array indices, and can be safely coverted into int.
// Numeric keys in queryNodeImpl are always array indices, and can be safely converted into int.
return strconv.Itoa(int(*q.CompKey.Num))
}

Expand Down
22 changes: 11 additions & 11 deletions db/ref_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -265,12 +265,12 @@ func TestGetIfChanged(t *testing.T) {
}

checkAllRequests(t, mock.Reqs, []*testReq{
&testReq{
{
Method: "GET",
Path: "/peter.json",
Header: http.Header{"If-None-Match": []string{"old-etag"}},
},
&testReq{
{
Method: "GET",
Path: "/peter.json",
Header: http.Header{"If-None-Match": []string{"new-etag"}},
Expand Down Expand Up @@ -513,7 +513,7 @@ func TestInvalidUpdate(t *testing.T) {
cases := []map[string]interface{}{
nil,
make(map[string]interface{}),
map[string]interface{}{"foo": func() {}},
{"foo": func() {}},
}
for _, tc := range cases {
if err := testref.Update(context.Background(), tc); err == nil {
Expand Down Expand Up @@ -542,12 +542,12 @@ func TestTransaction(t *testing.T) {
t.Fatal(err)
}
checkAllRequests(t, mock.Reqs, []*testReq{
&testReq{
{
Method: "GET",
Path: "/peter.json",
Header: http.Header{"X-Firebase-ETag": []string{"true"}},
},
&testReq{
{
Method: "PUT",
Path: "/peter.json",
Body: serialize(map[string]interface{}{
Expand Down Expand Up @@ -591,12 +591,12 @@ func TestTransactionRetry(t *testing.T) {
t.Errorf("Transaction() retries = %d; want = %d", cnt, 2)
}
checkAllRequests(t, mock.Reqs, []*testReq{
&testReq{
{
Method: "GET",
Path: "/peter.json",
Header: http.Header{"X-Firebase-ETag": []string{"true"}},
},
&testReq{
{
Method: "PUT",
Path: "/peter.json",
Body: serialize(map[string]interface{}{
Expand All @@ -605,7 +605,7 @@ func TestTransactionRetry(t *testing.T) {
}),
Header: http.Header{"If-Match": []string{"mock-etag1"}},
},
&testReq{
{
Method: "PUT",
Path: "/peter.json",
Body: serialize(map[string]interface{}{
Expand Down Expand Up @@ -650,12 +650,12 @@ func TestTransactionError(t *testing.T) {
t.Errorf("Transaction() retries = %d; want = %d", cnt, 1)
}
checkAllRequests(t, mock.Reqs, []*testReq{
&testReq{
{
Method: "GET",
Path: "/peter.json",
Header: http.Header{"X-Firebase-ETag": []string{"true"}},
},
&testReq{
{
Method: "PUT",
Path: "/peter.json",
Body: serialize(map[string]interface{}{
Expand Down Expand Up @@ -694,7 +694,7 @@ func TestTransactionAbort(t *testing.T) {
t.Errorf("Transaction() = nil; want error")
}
wanted := []*testReq{
&testReq{
{
Method: "GET",
Path: "/peter.json",
Header: http.Header{"X-Firebase-ETag": []string{"true"}},
Expand Down
5 changes: 3 additions & 2 deletions firebase.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@
package firebase

import (
"context"
"encoding/json"
"errors"
"io/ioutil"
"os"

"golang.org/x/net/context"

"cloud.google.com/go/firestore"

"firebase.google.com/go/auth"
Expand All @@ -41,7 +42,7 @@ import (
var defaultAuthOverrides = make(map[string]interface{})

// Version of the Firebase Go Admin SDK.
const Version = "2.6.0"
const Version = "2.6.1"

// firebaseEnvName is the name of the environment variable with the Config.
const firebaseEnvName = "FIREBASE_CONFIG"
Expand Down
36 changes: 16 additions & 20 deletions firebase_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
package firebase

import (
"context"
"fmt"
"io/ioutil"
"log"
"net/http"
Expand All @@ -28,6 +26,8 @@ import (
"testing"
"time"

"golang.org/x/net/context"

"golang.org/x/oauth2/google"

"google.golang.org/api/transport"
Expand Down Expand Up @@ -247,8 +247,8 @@ func TestDatabase(t *testing.T) {
func TestDatabaseAuthOverrides(t *testing.T) {
cases := []map[string]interface{}{
nil,
map[string]interface{}{},
map[string]interface{}{"uid": "user1"},
{},
{"uid": "user1"},
}
for _, tc := range cases {
ctx := context.Background()
Expand Down Expand Up @@ -539,15 +539,13 @@ func TestAutoInit(t *testing.T) {
defer reinstateEnv(credEnvVar, credOld)

for _, test := range tests {
t.Run(fmt.Sprintf("NewApp(%s)", test.name), func(t *testing.T) {
overwriteEnv(firebaseEnvName, test.optionsConfig)
app, err := NewApp(context.Background(), test.initOptions)
if err != nil {
t.Error(err)
} else {
compareConfig(app, test.wantOptions, t)
}
})
overwriteEnv(firebaseEnvName, test.optionsConfig)
app, err := NewApp(context.Background(), test.initOptions)
if err != nil {
t.Errorf("NewApp(%s): %v", test.name, err)
} else {
compareConfig(app, test.wantOptions, t)
}
}
}

Expand Down Expand Up @@ -577,13 +575,11 @@ func TestAutoInitInvalidFiles(t *testing.T) {
defer reinstateEnv(credEnvVar, credOld)

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
overwriteEnv(firebaseEnvName, test.filename)
_, err := NewApp(context.Background(), nil)
if err == nil || err.Error() != test.wantError {
t.Errorf("got error = %s; want = %s", err, test.wantError)
}
})
overwriteEnv(firebaseEnvName, test.filename)
_, err := NewApp(context.Background(), nil)
if err == nil || err.Error() != test.wantError {
t.Errorf("%s got error = %s; want = %s", test.name, err, test.wantError)
}
}
}

Expand Down
Loading