aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/test
diff options
context:
space:
mode:
authorGravatar Konstantin Varlamov <var-const@users.noreply.github.com>2018-06-07 12:29:16 -0400
committerGravatar GitHub <noreply@github.com>2018-06-07 12:29:16 -0400
commit7b2aa01da3df89dbea23b7c73202c6bf3f5813d3 (patch)
treef32ffbe3dc72f242bbdfb3c3e87b9003b61b9280 /Firestore/core/test
parent83fc5714b216fc867ac02875a3e2c6b6a013afce (diff)
Force refresh token if RPC fails with "Unauthenticated" error (#1373)
"Unauthenticated" is presumed to mean that token is expired (which might happen if local clock is wrong) and retried, subject to the usual backoff logic.
Diffstat (limited to 'Firestore/core/test')
-rw-r--r--Firestore/core/test/firebase/firestore/auth/empty_credentials_provider_test.cc24
-rw-r--r--Firestore/core/test/firebase/firestore/auth/firebase_credentials_provider_test.mm62
2 files changed, 59 insertions, 27 deletions
diff --git a/Firestore/core/test/firebase/firestore/auth/empty_credentials_provider_test.cc b/Firestore/core/test/firebase/firestore/auth/empty_credentials_provider_test.cc
index 60845e5..a2f5780 100644
--- a/Firestore/core/test/firebase/firestore/auth/empty_credentials_provider_test.cc
+++ b/Firestore/core/test/firebase/firestore/auth/empty_credentials_provider_test.cc
@@ -25,15 +25,14 @@ namespace auth {
TEST(EmptyCredentialsProvider, GetToken) {
EmptyCredentialsProvider credentials_provider;
- credentials_provider.GetToken(
- /*force_refresh=*/true, [](util::StatusOr<Token> result) {
- EXPECT_TRUE(result.ok());
- const Token& token = result.ValueOrDie();
- EXPECT_ANY_THROW(token.token());
- const User& user = token.user();
- EXPECT_EQ("", user.uid());
- EXPECT_FALSE(user.is_authenticated());
- });
+ credentials_provider.GetToken([](util::StatusOr<Token> result) {
+ EXPECT_TRUE(result.ok());
+ const Token& token = result.ValueOrDie();
+ EXPECT_ANY_THROW(token.token());
+ const User& user = token.user();
+ EXPECT_EQ("", user.uid());
+ EXPECT_FALSE(user.is_authenticated());
+ });
}
TEST(EmptyCredentialsProvider, SetListener) {
@@ -46,6 +45,13 @@ TEST(EmptyCredentialsProvider, SetListener) {
credentials_provider.SetUserChangeListener(nullptr);
}
+TEST(EmptyCredentialsProvider, InvalidateToken) {
+ EmptyCredentialsProvider credentials_provider;
+ credentials_provider.InvalidateToken();
+ credentials_provider.GetToken(
+ [](util::StatusOr<Token> result) { EXPECT_TRUE(result.ok()); });
+}
+
} // namespace auth
} // namespace firestore
} // namespace firebase
diff --git a/Firestore/core/test/firebase/firestore/auth/firebase_credentials_provider_test.mm b/Firestore/core/test/firebase/firestore/auth/firebase_credentials_provider_test.mm
index 9d358b5..873f1b2 100644
--- a/Firestore/core/test/firebase/firestore/auth/firebase_credentials_provider_test.mm
+++ b/Firestore/core/test/firebase/firestore/auth/firebase_credentials_provider_test.mm
@@ -51,30 +51,28 @@ TEST(FirebaseCredentialsProviderTest, GetTokenUnauthenticated) {
FIRApp* app = AppWithFakeUid(nil);
FirebaseCredentialsProvider credentials_provider(app);
- credentials_provider.GetToken(
- /*force_refresh=*/true, [](util::StatusOr<Token> result) {
- EXPECT_TRUE(result.ok());
- const Token& token = result.ValueOrDie();
- EXPECT_ANY_THROW(token.token());
- const User& user = token.user();
- EXPECT_EQ("", user.uid());
- EXPECT_FALSE(user.is_authenticated());
- });
+ credentials_provider.GetToken([](util::StatusOr<Token> result) {
+ EXPECT_TRUE(result.ok());
+ const Token& token = result.ValueOrDie();
+ EXPECT_ANY_THROW(token.token());
+ const User& user = token.user();
+ EXPECT_EQ("", user.uid());
+ EXPECT_FALSE(user.is_authenticated());
+ });
}
TEST(FirebaseCredentialsProviderTest, GetToken) {
FIRApp* app = AppWithFakeUidAndToken(@"fake uid", @"token for fake uid");
FirebaseCredentialsProvider credentials_provider(app);
- credentials_provider.GetToken(
- /*force_refresh=*/true, [](util::StatusOr<Token> result) {
- EXPECT_TRUE(result.ok());
- const Token& token = result.ValueOrDie();
- EXPECT_EQ("token for fake uid", token.token());
- const User& user = token.user();
- EXPECT_EQ("fake uid", user.uid());
- EXPECT_TRUE(user.is_authenticated());
- });
+ credentials_provider.GetToken([](util::StatusOr<Token> result) {
+ EXPECT_TRUE(result.ok());
+ const Token& token = result.ValueOrDie();
+ EXPECT_EQ("token for fake uid", token.token());
+ const User& user = token.user();
+ EXPECT_EQ("fake uid", user.uid());
+ EXPECT_TRUE(user.is_authenticated());
+ });
}
TEST(FirebaseCredentialsProviderTest, SetListener) {
@@ -89,6 +87,34 @@ TEST(FirebaseCredentialsProviderTest, SetListener) {
credentials_provider.SetUserChangeListener(nullptr);
}
+FIRApp* FakeAppExpectingForceRefreshToken(NSString* _Nullable uid,
+ NSString* _Nullable token) {
+ FIRApp* app = testutil::AppForUnitTesting();
+ app.getUIDImplementation = ^NSString* {
+ return uid;
+ };
+ app.getTokenImplementation =
+ ^(BOOL force_refresh, FIRTokenCallback callback) {
+ EXPECT_TRUE(force_refresh);
+ callback(token, nil);
+ };
+ return app;
+}
+
+TEST(FirebaseCredentialsProviderTest, InvalidateToken) {
+ FIRApp* app =
+ FakeAppExpectingForceRefreshToken(@"fake uid", @"token for fake uid");
+
+ FirebaseCredentialsProvider credentials_provider{app};
+ credentials_provider.InvalidateToken();
+ credentials_provider.GetToken([](util::StatusOr<Token> result) {
+ EXPECT_TRUE(result.ok());
+ const Token& token = result.ValueOrDie();
+ EXPECT_EQ("token for fake uid", token.token());
+ EXPECT_EQ("fake uid", token.user().uid());
+ });
+}
+
} // namespace auth
} // namespace firestore
} // namespace firebase