15
15
#include < inttypes.h>
16
16
17
17
#include < algorithm>
18
+ #include < chrono>
18
19
#include < cstdio>
19
20
#include < cstdlib>
20
21
#include < cstring>
21
22
#include < ctime>
23
+ #include < future>
22
24
#include < map>
25
+ #include < memory>
23
26
#include < string>
27
+ #include < thread>
24
28
25
29
#include " app_framework.h" // NOLINT
26
30
#include " firebase/app.h"
@@ -61,6 +65,8 @@ using testing::Pair;
61
65
using testing::UnorderedElementsAre;
62
66
63
67
const char kIntegrationTestRootPath [] = " integration_test_data" ;
68
+ const std::chrono::milliseconds kGetTokenTimeout =
69
+ std::chrono::milliseconds (5000 );
64
70
65
71
class FirebaseAppCheckTest : public FirebaseTest {
66
72
public:
@@ -335,15 +341,57 @@ TEST_F(FirebaseAppCheckTest, TestSignIn) {
335
341
EXPECT_NE (auth_->current_user (), nullptr );
336
342
}
337
343
344
+ TEST_F (FirebaseAppCheckTest, TestDebugProviderValidToken) {
345
+ firebase::app_check::DebugAppCheckProviderFactory* factory =
346
+ firebase::app_check::DebugAppCheckProviderFactory::GetInstance ();
347
+ #if FIREBASE_PLATFORM_IOS
348
+ ASSERT_NE (factory, nullptr );
349
+ InitializeApp ();
350
+ firebase::app_check::AppCheckProvider* provider =
351
+ factory->CreateProvider (app_);
352
+ ASSERT_NE (provider, nullptr );
353
+ auto got_token_promise = std::make_shared<std::promise<void >>();
354
+ auto token_callback{
355
+ [&got_token_promise](firebase::app_check::AppCheckToken token,
356
+ int error_code, const std::string& error_message) {
357
+ EXPECT_EQ (firebase::app_check::kAppCheckErrorNone , error_code);
358
+ EXPECT_EQ (" " , error_message);
359
+ EXPECT_NE (0 , token.expire_time_millis );
360
+ EXPECT_NE (" " , token.token );
361
+ got_token_promise->set_value ();
362
+ }};
363
+ provider->GetToken (token_callback);
364
+ auto got_token_future = got_token_promise->get_future ();
365
+ ASSERT_EQ (std::future_status::ready,
366
+ got_token_future.wait_for (kGetTokenTimeout ));
367
+ #else
368
+ EXPECT_EQ (factory, nullptr );
369
+ #endif
370
+ }
371
+
338
372
TEST_F (FirebaseAppCheckTest, TestAppAttestProvider) {
339
373
firebase::app_check::AppAttestProviderFactory* factory =
340
374
firebase::app_check::AppAttestProviderFactory::GetInstance ();
341
375
#if FIREBASE_PLATFORM_IOS
342
- EXPECT_NE (factory, nullptr );
376
+ ASSERT_NE (factory, nullptr );
343
377
InitializeApp ();
344
378
firebase::app_check::AppCheckProvider* provider =
345
379
factory->CreateProvider (app_);
346
- EXPECT_NE (provider, nullptr );
380
+ ASSERT_NE (provider, nullptr );
381
+ auto got_token_promise = std::make_shared<std::promise<void >>();
382
+ auto token_callback{
383
+ [&got_token_promise](firebase::app_check::AppCheckToken token,
384
+ int error_code, const std::string& error_message) {
385
+ EXPECT_EQ (firebase::app_check::kAppCheckErrorUnsupportedProvider ,
386
+ error_code);
387
+ EXPECT_NE (" " , error_message);
388
+ EXPECT_EQ (" " , token.token );
389
+ got_token_promise->set_value ();
390
+ }};
391
+ provider->GetToken (token_callback);
392
+ auto got_token_future = got_token_promise->get_future ();
393
+ ASSERT_EQ (std::future_status::ready,
394
+ got_token_future.wait_for (kGetTokenTimeout ));
347
395
#else
348
396
EXPECT_EQ (factory, nullptr );
349
397
#endif
@@ -353,11 +401,24 @@ TEST_F(FirebaseAppCheckTest, TestDeviceCheckProvider) {
353
401
firebase::app_check::DeviceCheckProviderFactory* factory =
354
402
firebase::app_check::DeviceCheckProviderFactory::GetInstance ();
355
403
#if FIREBASE_PLATFORM_IOS
356
- EXPECT_NE (factory, nullptr );
404
+ ASSERT_NE (factory, nullptr );
357
405
InitializeApp ();
358
406
firebase::app_check::AppCheckProvider* provider =
359
407
factory->CreateProvider (app_);
360
- EXPECT_NE (provider, nullptr );
408
+ ASSERT_NE (provider, nullptr );
409
+ auto got_token_promise = std::make_shared<std::promise<void >>();
410
+ auto token_callback{
411
+ [&got_token_promise](firebase::app_check::AppCheckToken token,
412
+ int error_code, const std::string& error_message) {
413
+ EXPECT_EQ (firebase::app_check::kAppCheckErrorUnknown , error_code);
414
+ EXPECT_NE (" " , error_message);
415
+ EXPECT_EQ (" " , token.token );
416
+ got_token_promise->set_value ();
417
+ }};
418
+ provider->GetToken (token_callback);
419
+ auto got_token_future = got_token_promise->get_future ();
420
+ ASSERT_EQ (std::future_status::ready,
421
+ got_token_future.wait_for (kGetTokenTimeout ));
361
422
#else
362
423
EXPECT_EQ (factory, nullptr );
363
424
#endif
@@ -367,7 +428,7 @@ TEST_F(FirebaseAppCheckTest, TestPlayIntegrityProvider) {
367
428
firebase::app_check::PlayIntegrityProviderFactory* factory =
368
429
firebase::app_check::PlayIntegrityProviderFactory::GetInstance ();
369
430
#if FIREBASE_PLATFORM_ANDROID
370
- EXPECT_NE (factory, nullptr );
431
+ ASSERT_NE (factory, nullptr );
371
432
InitializeApp ();
372
433
firebase::app_check::AppCheckProvider* provider =
373
434
factory->CreateProvider (app_);
@@ -381,7 +442,7 @@ TEST_F(FirebaseAppCheckTest, TestSafetyNetProvider) {
381
442
firebase::app_check::SafetyNetProviderFactory* factory =
382
443
firebase::app_check::SafetyNetProviderFactory::GetInstance ();
383
444
#if FIREBASE_PLATFORM_ANDROID
384
- EXPECT_NE (factory, nullptr );
445
+ ASSERT_NE (factory, nullptr );
385
446
InitializeApp ();
386
447
firebase::app_check::AppCheckProvider* provider =
387
448
factory->CreateProvider (app_);
0 commit comments