Skip to content

Commit

Permalink
Release Version 2.4.0 (#69)
Browse files Browse the repository at this point in the history
* Documentation fix md file (#43)

* Clarify certificate download comment

* Fix Link

* Adding User Management utils, including Custom Claims in the auth package. (#42)

Adding the user management go SDK.
This includes the customClaims and the iterator over all users. (as well as Create, Update, Delete User, and GetUser (by UID, Phone or Email))

Proposal : go/firebase-go-user-mgt

Code snippets: 
  https://firebase-dot-devsite.googleplex.com/docs/auth/admin/manage-users
  https://firebase-dot-devsite.googleplex.com/docs/auth/admin/custom-claims

TODO: clean up the case of an http.DefaultClient when there are no options.

* Minor improvements to user management code (#44)

* some changes to auth

* Implemented a reusable HTTP client API

* Added test cases

* Comment clean up

* Simplified the usage by adding HTTPClient

* Using the old ctx import

* Support for arbitrary entity types in the request

* Renamed fields; Added documentation

* Removing a redundant else case

* initial

* more integration tests

* set custom - still needs guessing the type for unmarshaling.

* tests

* server

* server

* .

* json

* json

* move testdata

* get

* tests

* updated to param struct of pointers to call create and update

* Comments

* cleanup

* cleanup

* cleanup

* cleanup minor test changes

* Changing the iteraator pattern

* last page iterator test fix

* clean up tests next.

* make the fetch tidier

* fetch cleanup

* cc change

* custom claims

* newline

* adding error propagation to makeExportedUser

* remove trivial claims map type

* list users test data

* rename p ptr, and remove the with... options for the iterator

* rename p ptr

* some unit tests

* adding integration tests for custom claims

* NO ERROR

* unit tests

* comments hkj

* addressing comments

* delete unneeded json file

* phone NUMBER

* typo

* remove cc from create

* refactor param structs

* remove package ptr

* test refactor

* cleanup comments

* cleanup debug.test

* Adding back the default http client

* fix httpClient for tests

* creds

* creds

* fix default http client

* cleanupPrintfs

* disable

* Reanme payload vars

* Revert newHTTPKeySource function

* add back defaultClient in newClient

* reenable testNewHTTPClientNoOpts)

* reverting keysource tests)

* Take the httpClient from the keysource

* Removethe +1 second for the token timestamp.

* Adding tests

* White spaces

* Redesign the error validators

* prepare returns an error.

* cleanup

* dissolve

* dissolve

* clean tests

* split integration tests

* addressing comments

* addressing comments opt branch/ BEFORE hc change

* Removing the defaultClient from the NewClient, and extracting the NewClient creation outside of KeySource

* closer from echoServer

* cleanup + 500 error unit test

* unify error messages

* Refactor stop side effect for params preparation

* +1 to timestamp for flakiness

* removing +1

* disallow defaultClient

* whitespaces

* http default

* add TODO

* Code clean up and refactoring

* Refactored integration tests (#46)

* Refactored integration tests

* Minor cleanup

* Auth Unit Test Improvements (#45)

* Cleaning up new auth tests

* More updates to tests; Dissolved commonParams type

* More test updates

* More argument validation for auth

* Fixed a bug in enable/disable user; Added more tests; Cleaned up unit tests

* Removed debug file

* Create the 5th user in the integration tests for user management. (#47)

* Bump version to 2.2.0 (#49)

* Adding version, stat counter header and test (#50)

* Adding version to the header for the stat counter + tests
* bump version to 2.2.1
* Adding comment for manual cleanup

* Auth Package Internal Cleanup (#53)

* Release v2.2.1 (#51)

* Adding version, stat counter header and test (#50)
* Adding version to the header for the stat counter + tests
* bump version to 2.2.1
* Adding comment for manual cleanup

* Experimental auth cleanup

* Using a mock token source in tests

* Further cleaning up the test cases

* Implemented IID Delete API (#41)

* Implemented IID Delete API

* Cleaned up code

* Updated test case

* Updating comments

* Improved error handling

* Fixing malformed error messages due to extra format placeholders; Using the recommended Go error message format (no caps or punctuation)

* Bumped version to 2.3.0 (#56)

* use const for Common HTTP methods and HTTP status codes (#58)

* use const for Common HTTP methods and HTTP status codes

* fix format verbs  %q to %d

* golint - remove redundant if ...; err != nil check (#59)

* golint - remove redundant if ...; err != nil check

* add golint check on travis.yml

* update readme with Authentication Guide & Release Notes (#61)

* update readme with Authentication Guide & Release Notes

* fix a misspelling : separately

* fix missing newline before package

* Format JSON test data (#63)

* use identitytoolkit/v3 go client instead of makeHTTPCall (#60)

* use identitytoolkit/v3 go client instead of makeHTTPCall

* remove unnecessary if because empty values are not sent with identitytoolkit

* refactoring to avoid multiple header set

* change execute func to setHeader

* remove url from Client type, rename relayingpartyCall interface + fix providerID mistake

* change rawId value in test to 'testuid'

* Firebase App auto init (#54)

* FIREBASE_CONFIG env variable auto init, allows calling initialize_app with not arguments using the env variable

* allow env var to contain json

* add tests for json string in env file

* constant provider id plus tests (#64)

* Constant provider id plus tests

* Cleaning up the json tags in the structs following the identitytoolkit PR

* Expand comment about ProviderID

* Contributing (#65)

* [docs update] How to view test coverage.

* Release Version 2.3.0 (#57) (#67)

* Documentation fix md file (#43)

* Clarify certificate download comment

* Fix Link

* Adding User Management utils, including Custom Claims in the auth package. (#42)

Adding the user management go SDK.
This includes the customClaims and the iterator over all users. (as well as Create, Update, Delete User, and GetUser (by UID, Phone or Email))

Proposal : go/firebase-go-user-mgt

Code snippets: 
  https://firebase-dot-devsite.googleplex.com/docs/auth/admin/manage-users
  https://firebase-dot-devsite.googleplex.com/docs/auth/admin/custom-claims

TODO: clean up the case of an http.DefaultClient when there are no options.

* Minor improvements to user management code (#44)

* some changes to auth

* Implemented a reusable HTTP client API

* Added test cases

* Comment clean up

* Simplified the usage by adding HTTPClient

* Using the old ctx import

* Support for arbitrary entity types in the request

* Renamed fields; Added documentation

* Removing a redundant else case

* initial

* more integration tests

* set custom - still needs guessing the type for unmarshaling.

* tests

* server

* server

* .

* json

* json

* move testdata

* get

* tests

* updated to param struct of pointers to call create and update

* Comments

* cleanup

* cleanup

* cleanup

* cleanup minor test changes

* Changing the iteraator pattern

* last page iterator test fix

* clean up tests next.

* make the fetch tidier

* fetch cleanup

* cc change

* custom claims

* newline

* adding error propagation to makeExportedUser

* remove trivial claims map type

* list users test data

* rename p ptr, and remove the with... options for the iterator

* rename p ptr

* some unit tests

* adding integration tests for custom claims

* NO ERROR

* unit tests

* comments hkj

* addressing comments

* delete unneeded json file

* phone NUMBER

* typo

* remove cc from create

* refactor param structs

* remove package ptr

* test refactor

* cleanup comments

* cleanup debug.test

* Adding back the default http client

* fix httpClient for tests

* creds

* creds

* fix default http client

* cleanupPrintfs

* disable

* Reanme payload vars

* Revert newHTTPKeySource function

* add back defaultClient in newClient

* reenable testNewHTTPClientNoOpts)

* reverting keysource tests)

* Take the httpClient from the keysource

* Removethe +1 second for the token timestamp.

* Adding tests

* White spaces

* Redesign the error validators

* prepare returns an error.

* cleanup

* dissolve

* dissolve

* clean tests

* split integration tests

* addressing comments

* addressing comments opt branch/ BEFORE hc change

* Removing the defaultClient from the NewClient, and extracting the NewClient creation outside of KeySource

* closer from echoServer

* cleanup + 500 error unit test

* unify error messages

* Refactor stop side effect for params preparation

* +1 to timestamp for flakiness

* removing +1

* disallow defaultClient

* whitespaces

* http default

* add TODO

* Code clean up and refactoring

* Refactored integration tests (#46)

* Refactored integration tests

* Minor cleanup

* Auth Unit Test Improvements (#45)

* Cleaning up new auth tests

* More updates to tests; Dissolved commonParams type

* More test updates

* More argument validation for auth

* Fixed a bug in enable/disable user; Added more tests; Cleaned up unit tests

* Removed debug file

* Create the 5th user in the integration tests for user management. (#47)

* Bump version to 2.2.0 (#49)

* Adding version, stat counter header and test (#50)

* Adding version to the header for the stat counter + tests
* bump version to 2.2.1
* Adding comment for manual cleanup

* Auth Package Internal Cleanup (#53)

* Release v2.2.1 (#51)

* Adding version, stat counter header and test (#50)
* Adding version to the header for the stat counter + tests
* bump version to 2.2.1
* Adding comment for manual cleanup

* Experimental auth cleanup

* Using a mock token source in tests

* Further cleaning up the test cases

* Implemented IID Delete API (#41)

* Implemented IID Delete API

* Cleaned up code

* Updated test case

* Updating comments

* Improved error handling

* Fixing malformed error messages due to extra format placeholders; Using the recommended Go error message format (no caps or punctuation)

* Bumped version to 2.3.0 (#56)

* Bumped Version 2.4.0 (#66)

* Release Version 2.3.0 (#57) (#68)
  • Loading branch information
avishalom authored and hiranya911 committed Jan 11, 2018
1 parent 9b51e14 commit 31bcfc9
Show file tree
Hide file tree
Showing 22 changed files with 642 additions and 287 deletions.
6 changes: 5 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
language: go
go_import_path: firebase.google.com/go
script: go test -v -test.short ./...
before_install:
- go get github.com/golang/lint/golint
script:
- golint -set_exit_status $(go list ./...)
- go test -v -test.short ./...

15 changes: 15 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,18 @@ go test firebase.google.com/go/...
```

This will execute both unit and integration test suites.

### Test Coverage

Coverage can be measured per package by passing the `-cover` flag to the test invocation:

```bash
go test -cover firebase.google.com/go/auth
```

To view the detailed coverage reports (per package):

```bash
go test -cover -coverprofile=coverage.out firebase.google.com/go
go tool cover -html=coverage.out
```
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ requests, code review feedback, and also pull requests.
## Documentation

* [Setup Guide](https://firebase.google.com/docs/admin/setup/)
* [Authentication Guide](https://firebase.google.com/docs/auth/admin/)
* [API Reference](https://godoc.org/firebase.google.com/go)
* [Release Notes](https://firebase.google.com/support/release-notes/admin/go)


## License and Terms
Expand Down
27 changes: 8 additions & 19 deletions auth/auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ import (

"firebase.google.com/go/internal"
"golang.org/x/net/context"
"google.golang.org/api/identitytoolkit/v3"
"google.golang.org/api/transport"
)

const firebaseAudience = "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit"
const googleCertURL = "https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com"
const idToolKitURL = "https://www.googleapis.com/identitytoolkit/v3/relyingparty/"
const issuerPrefix = "https://securetoken.google.com/"
const tokenExpSeconds = 3600

Expand Down Expand Up @@ -63,10 +63,10 @@ type Token struct {
// by Firebase backend services.
type Client struct {
hc *internal.HTTPClient
is *identitytoolkit.Service
ks keySource
projectID string
snr signer
url string
version string
}

Expand Down Expand Up @@ -117,32 +117,21 @@ func NewClient(ctx context.Context, c *internal.AuthConfig) (*Client, error) {
return nil, err
}

is, err := identitytoolkit.New(hc)
if err != nil {
return nil, err
}

return &Client{
hc: &internal.HTTPClient{Client: hc},
is: is,
ks: newHTTPKeySource(googleCertURL, hc),
projectID: c.ProjectID,
snr: snr,
url: idToolKitURL,
version: "Go/Admin/" + c.Version,
}, nil
}

// Passes the request struct, returns a byte array of the json
func (c *Client) makeHTTPCall(ctx context.Context, serviceName string, payload interface{}, result interface{}) error {
versionHeader := internal.WithHeader("X-Client-Version", c.version)
request := &internal.Request{
Method: "POST",
URL: c.url + serviceName,
Body: internal.NewJSONEntity(payload),
Opts: []internal.HTTPOption{versionHeader},
}
resp, err := c.hc.Do(ctx, request)
if err != nil {
return err
}
return resp.Unmarshal(200, result)
}

// CustomToken creates a signed custom authentication token with the specified user ID. The resulting
// JWT can be used in a Firebase client SDK to trigger an authentication flow. See
// https://firebase.google.com/docs/auth/admin/create-custom-tokens#sign_in_using_custom_tokens_on_clients
Expand Down
2 changes: 1 addition & 1 deletion auth/crypto_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func newTestHTTPClient(data []byte) (*http.Client, *mockReadCloser) {
Transport: &mockHTTPResponse{
Response: http.Response{
Status: "200 OK",
StatusCode: 200,
StatusCode: http.StatusOK,
Header: http.Header{
"Cache-Control": {"public, max-age=100"},
},
Expand Down
Loading

0 comments on commit 31bcfc9

Please sign in to comment.