OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "google_apis/gcm/engine/gcm_store_impl.h" | 5 #include "google_apis/gcm/engine/gcm_store_impl.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 gcm_store->Load(base::Bind( | 525 gcm_store->Load(base::Bind( |
526 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 526 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
527 | 527 |
528 // Add account mappings. | 528 // Add account mappings. |
529 AccountMapping account_mapping1; | 529 AccountMapping account_mapping1; |
530 account_mapping1.account_id = "account_id_1"; | 530 account_mapping1.account_id = "account_id_1"; |
531 account_mapping1.email = "account_id_1@gmail.com"; | 531 account_mapping1.email = "account_id_1@gmail.com"; |
532 account_mapping1.access_token = "account_token1"; | 532 account_mapping1.access_token = "account_token1"; |
533 account_mapping1.status = AccountMapping::ADDING; | 533 account_mapping1.status = AccountMapping::ADDING; |
534 account_mapping1.status_change_timestamp = base::Time(); | 534 account_mapping1.status_change_timestamp = base::Time(); |
535 account_mapping1.last_message_type = AccountMapping::MSG_ADD; | |
536 account_mapping1.last_message_id = "message_1"; | 535 account_mapping1.last_message_id = "message_1"; |
537 | 536 |
538 AccountMapping account_mapping2; | 537 AccountMapping account_mapping2; |
539 account_mapping2.account_id = "account_id_2"; | 538 account_mapping2.account_id = "account_id_2"; |
540 account_mapping2.email = "account_id_2@gmail.com"; | 539 account_mapping2.email = "account_id_2@gmail.com"; |
541 account_mapping2.access_token = "account_token1"; | 540 account_mapping2.access_token = "account_token1"; |
542 account_mapping2.status = AccountMapping::REMOVING; | 541 account_mapping2.status = AccountMapping::REMOVING; |
543 account_mapping2.status_change_timestamp = | 542 account_mapping2.status_change_timestamp = |
544 base::Time::FromInternalValue(1305734521259935LL); | 543 base::Time::FromInternalValue(1305734521259935LL); |
545 account_mapping2.last_message_type = AccountMapping::MSG_REMOVE; | |
546 account_mapping2.last_message_id = "message_2"; | 544 account_mapping2.last_message_id = "message_2"; |
547 | 545 |
548 gcm_store->AddAccountMapping( | 546 gcm_store->AddAccountMapping( |
549 account_mapping1, | 547 account_mapping1, |
550 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); | 548 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); |
551 PumpLoop(); | 549 PumpLoop(); |
552 gcm_store->AddAccountMapping( | 550 gcm_store->AddAccountMapping( |
553 account_mapping2, | 551 account_mapping2, |
554 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); | 552 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); |
555 PumpLoop(); | 553 PumpLoop(); |
556 | 554 |
557 gcm_store = BuildGCMStore().Pass(); | 555 gcm_store = BuildGCMStore().Pass(); |
558 gcm_store->Load(base::Bind( | 556 gcm_store->Load(base::Bind( |
559 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 557 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
560 PumpLoop(); | 558 PumpLoop(); |
561 | 559 |
562 EXPECT_EQ(2UL, load_result->account_mappings.size()); | 560 EXPECT_EQ(2UL, load_result->account_mappings.size()); |
563 GCMStore::AccountMappingMap::iterator iter = | 561 GCMStore::AccountMappingMap::iterator iter = |
564 load_result->account_mappings.begin(); | 562 load_result->account_mappings.begin(); |
565 EXPECT_EQ("account_id_1", iter->first); | 563 EXPECT_EQ("account_id_1", iter->first); |
566 EXPECT_EQ(account_mapping1.account_id, iter->second.account_id); | 564 EXPECT_EQ(account_mapping1.account_id, iter->second.account_id); |
567 EXPECT_EQ(account_mapping1.email, iter->second.email); | 565 EXPECT_EQ(account_mapping1.email, iter->second.email); |
568 EXPECT_TRUE(iter->second.access_token.empty()); | 566 EXPECT_TRUE(iter->second.access_token.empty()); |
569 EXPECT_EQ(AccountMapping::ADDING, iter->second.status); | 567 EXPECT_EQ(AccountMapping::ADDING, iter->second.status); |
570 EXPECT_EQ(account_mapping1.status_change_timestamp, | 568 EXPECT_EQ(account_mapping1.status_change_timestamp, |
571 iter->second.status_change_timestamp); | 569 iter->second.status_change_timestamp); |
572 EXPECT_EQ(account_mapping1.last_message_type, iter->second.last_message_type); | |
573 EXPECT_EQ(account_mapping1.last_message_id, iter->second.last_message_id); | 570 EXPECT_EQ(account_mapping1.last_message_id, iter->second.last_message_id); |
574 ++iter; | 571 ++iter; |
575 EXPECT_EQ("account_id_2", iter->first); | 572 EXPECT_EQ("account_id_2", iter->first); |
576 EXPECT_EQ(account_mapping2.account_id, iter->second.account_id); | 573 EXPECT_EQ(account_mapping2.account_id, iter->second.account_id); |
577 EXPECT_EQ(account_mapping2.email, iter->second.email); | 574 EXPECT_EQ(account_mapping2.email, iter->second.email); |
578 EXPECT_TRUE(iter->second.access_token.empty()); | 575 EXPECT_TRUE(iter->second.access_token.empty()); |
579 EXPECT_EQ(AccountMapping::REMOVING, iter->second.status); | 576 EXPECT_EQ(AccountMapping::REMOVING, iter->second.status); |
580 EXPECT_EQ(account_mapping2.status_change_timestamp, | 577 EXPECT_EQ(account_mapping2.status_change_timestamp, |
581 iter->second.status_change_timestamp); | 578 iter->second.status_change_timestamp); |
582 EXPECT_EQ(account_mapping2.last_message_type, iter->second.last_message_type); | |
583 EXPECT_EQ(account_mapping2.last_message_id, iter->second.last_message_id); | 579 EXPECT_EQ(account_mapping2.last_message_id, iter->second.last_message_id); |
584 | 580 |
585 gcm_store->RemoveAccountMapping( | 581 gcm_store->RemoveAccountMapping( |
586 account_mapping1.account_id, | 582 account_mapping1.account_id, |
587 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); | 583 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); |
588 PumpLoop(); | 584 PumpLoop(); |
589 | 585 |
590 gcm_store = BuildGCMStore().Pass(); | 586 gcm_store = BuildGCMStore().Pass(); |
591 gcm_store->Load(base::Bind( | 587 gcm_store->Load(base::Bind( |
592 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); | 588 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); |
593 PumpLoop(); | 589 PumpLoop(); |
594 | 590 |
595 EXPECT_EQ(1UL, load_result->account_mappings.size()); | 591 EXPECT_EQ(1UL, load_result->account_mappings.size()); |
596 iter = load_result->account_mappings.begin(); | 592 iter = load_result->account_mappings.begin(); |
597 EXPECT_EQ("account_id_2", iter->first); | 593 EXPECT_EQ("account_id_2", iter->first); |
598 EXPECT_EQ(account_mapping2.account_id, iter->second.account_id); | 594 EXPECT_EQ(account_mapping2.account_id, iter->second.account_id); |
599 EXPECT_EQ(account_mapping2.email, iter->second.email); | 595 EXPECT_EQ(account_mapping2.email, iter->second.email); |
600 EXPECT_TRUE(iter->second.access_token.empty()); | 596 EXPECT_TRUE(iter->second.access_token.empty()); |
601 EXPECT_EQ(AccountMapping::REMOVING, iter->second.status); | 597 EXPECT_EQ(AccountMapping::REMOVING, iter->second.status); |
602 EXPECT_EQ(account_mapping2.status_change_timestamp, | 598 EXPECT_EQ(account_mapping2.status_change_timestamp, |
603 iter->second.status_change_timestamp); | 599 iter->second.status_change_timestamp); |
604 EXPECT_EQ(account_mapping2.last_message_type, iter->second.last_message_type); | |
605 EXPECT_EQ(account_mapping2.last_message_id, iter->second.last_message_id); | 600 EXPECT_EQ(account_mapping2.last_message_id, iter->second.last_message_id); |
606 } | 601 } |
607 | 602 |
608 // When the database is destroyed, all database updates should fail. At the | 603 // When the database is destroyed, all database updates should fail. At the |
609 // same time, they per-app message counts should not go up, as failures should | 604 // same time, they per-app message counts should not go up, as failures should |
610 // result in decrementing the counts. | 605 // result in decrementing the counts. |
611 TEST_F(GCMStoreImplTest, AddMessageAfterDestroy) { | 606 TEST_F(GCMStoreImplTest, AddMessageAfterDestroy) { |
612 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); | 607 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); |
613 scoped_ptr<GCMStore::LoadResult> load_result; | 608 scoped_ptr<GCMStore::LoadResult> load_result; |
614 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, | 609 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 | 642 |
648 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, | 643 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, |
649 base::Unretained(this), | 644 base::Unretained(this), |
650 &load_result)); | 645 &load_result)); |
651 PumpLoop(); | 646 PumpLoop(); |
652 } | 647 } |
653 | 648 |
654 } // namespace | 649 } // namespace |
655 | 650 |
656 } // namespace gcm | 651 } // namespace gcm |
OLD | NEW |