diff options
author | zxu <zxu@google.com> | 2018-02-27 14:04:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-27 14:04:39 -0500 |
commit | 3e7c062f3baca83fae1937bf60865be0cd18f96d (patch) | |
tree | b9816a635f0deda9601496b0d41f6b064f99d838 /Firestore/Example/Tests/SpecTests | |
parent | 13aeb61de4fac4c0239bcf44a98a7d3aa9203963 (diff) |
replacing Auth by C++ auth implementation (#802)
* lazy replacing FST(Firebase)CredentialsProvider by (Firebase)CredentialsProvider
* lazy replacing FSTUser by User
* adding error-code parameter to TokenListener
* actually use const user& instead of pointer; also add an error util
* add HashUser and pass into the unordered_map
* use User in test
* use c++ CredentialsProvider and subclass in test
* fix unit test
* use explicit capture in lambda instead of capture all by reference
* cache currentUser explicitly when reset sync engineer test driver
* objc object should be captured by value in lambda
* replacing Auth/FSTUser by C++ auth implementation
* address changes
* replacing FSTGetTokenResult by C++ Token implementation
* address changes
* fix unintentional change in merging
* patch the change in objc Auth up-stream
* somehow, the lambda-version of set-user-change-listener does not work... fallback to block
* address changes
* fix another const& v.s. dispatch bug
* fix more const& v.s. dispatch bug zxu123 committed
* fix a bad sync line
* address changes
* address change
* address change
* fix upstream change from merge
* fix upstream changes
* Suggested fixes for cpp/port_auth (#846)
* Get rid of MockDatastore factory
This avoids the need to statically allocate (and leak) a credentials
provider
* Use absl::make_unique
std::make_unique technically does not exist until C++14.
* #include <utility> for std::move
* Use std::future for the initial user
* fix style
Diffstat (limited to 'Firestore/Example/Tests/SpecTests')
3 files changed, 26 insertions, 25 deletions
diff --git a/Firestore/Example/Tests/SpecTests/FSTMockDatastore.h b/Firestore/Example/Tests/SpecTests/FSTMockDatastore.h index 5420c2e..e1ea2fb 100644 --- a/Firestore/Example/Tests/SpecTests/FSTMockDatastore.h +++ b/Firestore/Example/Tests/SpecTests/FSTMockDatastore.h @@ -34,8 +34,6 @@ NS_ASSUME_NONNULL_BEGIN */ @property(nonatomic) int writeStreamRequestCount; -+ (instancetype)mockDatastoreWithWorkerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue; - #pragma mark - Watch Stream manipulation. /** Injects an Added WatchChange containing the given targetIDs. */ diff --git a/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm b/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm index d3c4171..6715b24 100644 --- a/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm +++ b/Firestore/Example/Tests/SpecTests/FSTMockDatastore.mm @@ -16,7 +16,6 @@ #import "Firestore/Example/Tests/SpecTests/FSTMockDatastore.h" -#import "Firestore/Source/Auth/FSTEmptyCredentialsProvider.h" #import "Firestore/Source/Core/FSTSnapshotVersion.h" #import "Firestore/Source/Local/FSTQueryData.h" #import "Firestore/Source/Model/FSTMutation.h" @@ -27,10 +26,14 @@ #import "Firestore/Example/Tests/Remote/FSTWatchChange+Testing.h" +#include "Firestore/core/src/firebase/firestore/auth/credentials_provider.h" +#include "Firestore/core/src/firebase/firestore/auth/empty_credentials_provider.h" #include "Firestore/core/src/firebase/firestore/core/database_info.h" #include "Firestore/core/src/firebase/firestore/model/database_id.h" #include "Firestore/core/src/firebase/firestore/util/string_apple.h" +using firebase::firestore::auth::CredentialsProvider; +using firebase::firestore::auth::EmptyCredentialsProvider; using firebase::firestore::core::DatabaseInfo; using firebase::firestore::model::DatabaseId; @@ -44,17 +47,17 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithDatastore:(FSTMockDatastore *)datastore workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials serializer:(FSTSerializerBeta *)serializer NS_DESIGNATED_INITIALIZER; - (instancetype)initWithDatabase:(const DatabaseInfo *)database workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials serializer:(FSTSerializerBeta *)serializer NS_UNAVAILABLE; - (instancetype)initWithDatabase:(const DatabaseInfo *)database workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials responseMessageClass:(Class)responseMessageClass NS_UNAVAILABLE; @property(nonatomic, assign) BOOL open; @@ -69,7 +72,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithDatastore:(FSTMockDatastore *)datastore workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials serializer:(FSTSerializerBeta *)serializer { self = [super initWithDatabase:datastore.databaseInfo workerDispatchQueue:workerDispatchQueue @@ -170,17 +173,17 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithDatastore:(FSTMockDatastore *)datastore workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials serializer:(FSTSerializerBeta *)serializer NS_DESIGNATED_INITIALIZER; - (instancetype)initWithDatabase:(const DatabaseInfo *)database workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials serializer:(FSTSerializerBeta *)serializer NS_UNAVAILABLE; - (instancetype)initWithDatabase:(const DatabaseInfo *)database workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials responseMessageClass:(Class)responseMessageClass NS_UNAVAILABLE; @property(nonatomic, strong, readonly) FSTMockDatastore *datastore; @@ -193,7 +196,7 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithDatastore:(FSTMockDatastore *)datastore workerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue - credentials:(id<FSTCredentialsProvider>)credentials + credentials:(CredentialsProvider *)credentials serializer:(FSTSerializerBeta *)serializer { self = [super initWithDatabase:datastore.databaseInfo workerDispatchQueue:workerDispatchQueue @@ -279,24 +282,12 @@ NS_ASSUME_NONNULL_BEGIN /** Properties implemented in FSTDatastore that are nonpublic. */ @property(nonatomic, strong, readonly) FSTDispatchQueue *workerDispatchQueue; -@property(nonatomic, strong, readonly) id<FSTCredentialsProvider> credentials; +@property(nonatomic, assign, readonly) CredentialsProvider *credentials; @end @implementation FSTMockDatastore -+ (instancetype)mockDatastoreWithWorkerDispatchQueue:(FSTDispatchQueue *)workerDispatchQueue { - // This owns the DatabaseInfos since we do not have FirestoreClient instance to own them. - static DatabaseInfo database_info{DatabaseId{"project", "database"}, "persistence", "host", - false}; - - FSTEmptyCredentialsProvider *credentials = [[FSTEmptyCredentialsProvider alloc] init]; - - return [[FSTMockDatastore alloc] initWithDatabaseInfo:&database_info - workerDispatchQueue:workerDispatchQueue - credentials:credentials]; -} - #pragma mark - Overridden FSTDatastore methods. - (FSTWatchStream *)createWatchStream { diff --git a/Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm b/Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm index 1c7eadf..07dc84f 100644 --- a/Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm +++ b/Firestore/Example/Tests/SpecTests/FSTSyncEngineTestDriver.mm @@ -37,10 +37,16 @@ #import "Firestore/Example/Tests/Core/FSTSyncEngine+Testing.h" #import "Firestore/Example/Tests/SpecTests/FSTMockDatastore.h" +#include "Firestore/core/src/firebase/firestore/auth/empty_credentials_provider.h" #include "Firestore/core/src/firebase/firestore/auth/user.h" +#include "Firestore/core/src/firebase/firestore/core/database_info.h" +#include "Firestore/core/src/firebase/firestore/model/database_id.h" +using firebase::firestore::auth::EmptyCredentialsProvider; using firebase::firestore::auth::HashUser; using firebase::firestore::auth::User; +using firebase::firestore::core::DatabaseInfo; +using firebase::firestore::model::DatabaseId; NS_ASSUME_NONNULL_BEGIN @@ -83,7 +89,9 @@ NS_ASSUME_NONNULL_BEGIN // ivar is declared as mutable. std::unordered_map<User, NSMutableArray<FSTOutstandingWrite *> *, HashUser> _outstandingWrites; + DatabaseInfo _databaseInfo; User _currentUser; + EmptyCredentialsProvider _credentialProvider; } - (instancetype)initWithPersistence:(id<FSTPersistence>)persistence @@ -106,13 +114,17 @@ NS_ASSUME_NONNULL_BEGIN _events = [NSMutableArray array]; + _databaseInfo = {DatabaseId{"project", "database"}, "persistence", "host", false}; + // Set up the sync engine and various stores. dispatch_queue_t mainQueue = dispatch_get_main_queue(); FSTDispatchQueue *dispatchQueue = [FSTDispatchQueue queueWith:mainQueue]; _localStore = [[FSTLocalStore alloc] initWithPersistence:persistence garbageCollector:garbageCollector initialUser:initialUser]; - _datastore = [FSTMockDatastore mockDatastoreWithWorkerDispatchQueue:dispatchQueue]; + _datastore = [[FSTMockDatastore alloc] initWithDatabaseInfo:&_databaseInfo + workerDispatchQueue:dispatchQueue + credentials:&_credentialProvider]; _remoteStore = [FSTRemoteStore remoteStoreWithLocalStore:_localStore datastore:_datastore]; |