| 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 "components/gcm_driver/gcm_driver_desktop.h" | 5 #include "components/gcm_driver/gcm_driver_desktop.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 #include "net/url_request/url_request_context_getter.h" | 34 #include "net/url_request/url_request_context_getter.h" |
| 35 #include "net/url_request/url_request_test_util.h" | 35 #include "net/url_request/url_request_test_util.h" |
| 36 #include "testing/gtest/include/gtest/gtest.h" | 36 #include "testing/gtest/include/gtest/gtest.h" |
| 37 | 37 |
| 38 namespace gcm { | 38 namespace gcm { |
| 39 | 39 |
| 40 namespace { | 40 namespace { |
| 41 | 41 |
| 42 const char kTestAppID1[] = "TestApp1"; | 42 const char kTestAppID1[] = "TestApp1"; |
| 43 const char kTestAppID2[] = "TestApp2"; | 43 const char kTestAppID2[] = "TestApp2"; |
| 44 const char kTestMessageID[] = "TestMessage1"; |
| 44 const char kUserID1[] = "user1"; | 45 const char kUserID1[] = "user1"; |
| 45 const char kScope[] = "GCM"; | 46 const char kScope[] = "GCM"; |
| 46 const char kInstanceID1[] = "IID1"; | 47 const char kInstanceID1[] = "IID1"; |
| 47 const char kInstanceID2[] = "IID2"; | 48 const char kInstanceID2[] = "IID2"; |
| 48 | 49 |
| 49 class FakeGCMConnectionObserver : public GCMConnectionObserver { | 50 class FakeGCMConnectionObserver : public GCMConnectionObserver { |
| 50 public: | 51 public: |
| 51 FakeGCMConnectionObserver(); | 52 FakeGCMConnectionObserver(); |
| 52 ~FakeGCMConnectionObserver() override; | 53 ~FakeGCMConnectionObserver() override; |
| 53 | 54 |
| (...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 834 } | 835 } |
| 835 | 836 |
| 836 TEST_F(GCMDriverFunctionalTest, MessageReceived) { | 837 TEST_F(GCMDriverFunctionalTest, MessageReceived) { |
| 837 // GCM registration has to be performed otherwise GCM will not be started. | 838 // GCM registration has to be performed otherwise GCM will not be started. |
| 838 Register(kTestAppID1, ToSenderList("sender"), GCMDriverTest::WAIT); | 839 Register(kTestAppID1, ToSenderList("sender"), GCMDriverTest::WAIT); |
| 839 | 840 |
| 840 IncomingMessage message; | 841 IncomingMessage message; |
| 841 message.data["key1"] = "value1"; | 842 message.data["key1"] = "value1"; |
| 842 message.data["key2"] = "value2"; | 843 message.data["key2"] = "value2"; |
| 843 message.sender_id = "sender"; | 844 message.sender_id = "sender"; |
| 844 GetGCMClient()->ReceiveMessage(kTestAppID1, message); | 845 GetGCMClient()->ReceiveMessage(kTestAppID1, kTestMessageID, message); |
| 845 gcm_app_handler()->WaitForNotification(); | 846 gcm_app_handler()->WaitForNotification(); |
| 846 EXPECT_EQ(FakeGCMAppHandler::MESSAGE_EVENT, | 847 EXPECT_EQ(FakeGCMAppHandler::MESSAGE_EVENT, |
| 847 gcm_app_handler()->received_event()); | 848 gcm_app_handler()->received_event()); |
| 848 EXPECT_EQ(kTestAppID1, gcm_app_handler()->app_id()); | 849 EXPECT_EQ(kTestAppID1, gcm_app_handler()->app_id()); |
| 849 EXPECT_EQ(message.data, gcm_app_handler()->message().data); | 850 EXPECT_EQ(message.data, gcm_app_handler()->message().data); |
| 850 EXPECT_TRUE(gcm_app_handler()->message().collapse_key.empty()); | 851 EXPECT_TRUE(gcm_app_handler()->message().collapse_key.empty()); |
| 851 EXPECT_EQ(message.sender_id, gcm_app_handler()->message().sender_id); | 852 EXPECT_EQ(message.sender_id, gcm_app_handler()->message().sender_id); |
| 852 } | 853 } |
| 853 | 854 |
| 854 TEST_F(GCMDriverFunctionalTest, MessageWithCollapseKeyReceived) { | 855 TEST_F(GCMDriverFunctionalTest, MessageWithCollapseKeyReceived) { |
| 855 // GCM registration has to be performed otherwise GCM will not be started. | 856 // GCM registration has to be performed otherwise GCM will not be started. |
| 856 Register(kTestAppID1, ToSenderList("sender"), GCMDriverTest::WAIT); | 857 Register(kTestAppID1, ToSenderList("sender"), GCMDriverTest::WAIT); |
| 857 | 858 |
| 858 IncomingMessage message; | 859 IncomingMessage message; |
| 859 message.data["key1"] = "value1"; | 860 message.data["key1"] = "value1"; |
| 860 message.collapse_key = "collapse_key_value"; | 861 message.collapse_key = "collapse_key_value"; |
| 861 message.sender_id = "sender"; | 862 message.sender_id = "sender"; |
| 862 GetGCMClient()->ReceiveMessage(kTestAppID1, message); | 863 GetGCMClient()->ReceiveMessage(kTestAppID1, kTestMessageID, message); |
| 863 gcm_app_handler()->WaitForNotification(); | 864 gcm_app_handler()->WaitForNotification(); |
| 864 EXPECT_EQ(FakeGCMAppHandler::MESSAGE_EVENT, | 865 EXPECT_EQ(FakeGCMAppHandler::MESSAGE_EVENT, |
| 865 gcm_app_handler()->received_event()); | 866 gcm_app_handler()->received_event()); |
| 866 EXPECT_EQ(kTestAppID1, gcm_app_handler()->app_id()); | 867 EXPECT_EQ(kTestAppID1, gcm_app_handler()->app_id()); |
| 867 EXPECT_EQ(message.data, gcm_app_handler()->message().data); | 868 EXPECT_EQ(message.data, gcm_app_handler()->message().data); |
| 868 EXPECT_EQ(message.collapse_key, | 869 EXPECT_EQ(message.collapse_key, |
| 869 gcm_app_handler()->message().collapse_key); | 870 gcm_app_handler()->message().collapse_key); |
| 870 } | 871 } |
| 871 | 872 |
| 872 TEST_F(GCMDriverFunctionalTest, EncryptedMessageReceivedError) { | 873 TEST_F(GCMDriverFunctionalTest, EncryptedMessageReceivedError) { |
| 873 // GCM registration has to be performed otherwise GCM will not be started. | 874 // GCM registration has to be performed otherwise GCM will not be started. |
| 874 Register(kTestAppID1, ToSenderList("sender"), GCMDriverTest::WAIT); | 875 Register(kTestAppID1, ToSenderList("sender"), GCMDriverTest::WAIT); |
| 875 | 876 |
| 876 IncomingMessage message; | 877 IncomingMessage message; |
| 877 | 878 |
| 878 // All required information to trigger the encryption path, but with an | 879 // All required information to trigger the encryption path, but with an |
| 879 // invalid Crypto-Key header value to trigger an error. | 880 // invalid Crypto-Key header value to trigger an error. |
| 880 message.data["encryption"] = "salt=ysyxqlYTgE0WvcZrmHbUbg"; | 881 message.data["encryption"] = "salt=ysyxqlYTgE0WvcZrmHbUbg"; |
| 881 message.data["crypto-key"] = "hey=thereisnopublickey"; | 882 message.data["crypto-key"] = "hey=thereisnopublickey"; |
| 882 message.sender_id = "sender"; | 883 message.sender_id = "sender"; |
| 883 message.raw_data = "foobar"; | 884 message.raw_data = "foobar"; |
| 884 | 885 |
| 885 GetGCMClient()->SetRecording(true); | 886 GetGCMClient()->SetRecording(true); |
| 886 GetGCMClient()->ReceiveMessage(kTestAppID1, message); | 887 GetGCMClient()->ReceiveMessage(kTestAppID1, kTestMessageID, message); |
| 887 | 888 |
| 888 PumpIOLoop(); | 889 PumpIOLoop(); |
| 889 PumpUILoop(); | 890 PumpUILoop(); |
| 890 PumpIOLoop(); | 891 PumpIOLoop(); |
| 891 | 892 |
| 892 GCMClient::GCMStatistics statistics = GetGCMClient()->GetStatistics(); | 893 GCMClient::GCMStatistics statistics = GetGCMClient()->GetStatistics(); |
| 893 EXPECT_TRUE(statistics.is_recording); | 894 EXPECT_TRUE(statistics.is_recording); |
| 894 EXPECT_EQ( | 895 EXPECT_EQ( |
| 895 1u, statistics.recorded_activities.decryption_failure_activities.size()); | 896 1u, statistics.recorded_activities.decryption_failure_activities.size()); |
| 896 } | 897 } |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1378 PumpUILoop(); | 1379 PumpUILoop(); |
| 1379 EXPECT_EQ(GCMClient::UNKNOWN_ERROR, unregistration_result()); | 1380 EXPECT_EQ(GCMClient::UNKNOWN_ERROR, unregistration_result()); |
| 1380 | 1381 |
| 1381 // DeleteToken operation will be invoked after GCMClient becomes ready. | 1382 // DeleteToken operation will be invoked after GCMClient becomes ready. |
| 1382 GetGCMClient()->PerformDelayedStart(); | 1383 GetGCMClient()->PerformDelayedStart(); |
| 1383 WaitForAsyncOperation(); | 1384 WaitForAsyncOperation(); |
| 1384 EXPECT_EQ(GCMClient::SUCCESS, unregistration_result()); | 1385 EXPECT_EQ(GCMClient::SUCCESS, unregistration_result()); |
| 1385 } | 1386 } |
| 1386 | 1387 |
| 1387 } // namespace gcm | 1388 } // namespace gcm |
| OLD | NEW |