| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 // This file defines a unit test harness for the profile's token service. | 5 // This file defines a unit test harness for the profile's token service. |
| 6 | 6 |
| 7 #ifndef CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ | 7 #ifndef CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ |
| 8 #define CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ | 8 #define CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ |
| 9 #pragma once | 9 #pragma once |
| 10 | 10 |
| 11 #include "base/synchronization/waitable_event.h" | 11 #include "base/synchronization/waitable_event.h" |
| 12 #include "chrome/browser/net/gaia/token_service.h" | 12 #include "chrome/browser/net/gaia/token_service.h" |
| 13 #include "chrome/browser/webdata/web_data_service.h" | 13 #include "chrome/browser/webdata/web_data_service.h" |
| 14 #include "chrome/common/net/gaia/gaia_auth_consumer.h" | 14 #include "chrome/common/net/gaia/gaia_auth_consumer.h" |
| 15 #include "chrome/common/notification_details.h" | 15 #include "chrome/common/notification_details.h" |
| 16 #include "chrome/common/notification_source.h" | 16 #include "chrome/common/notification_source.h" |
| 17 #include "chrome/test/signaling_task.h" | 17 #include "chrome/test/signaling_task.h" |
| 18 #include "chrome/test/test_notification_tracker.h" | 18 #include "chrome/test/test_notification_tracker.h" |
| 19 #include "chrome/test/testing_profile.h" | 19 #include "chrome/test/testing_profile.h" |
| 20 #include "testing/gtest/include/gtest/gtest.h" | 20 #include "testing/gtest/include/gtest/gtest.h" |
| 21 | 21 |
| 22 // TestNotificationTracker doesn't do a deep copy on the notification details. | 22 // TestNotificationTracker doesn't do a deep copy on the notification details. |
| 23 // We have to in order to read it out, or we have a bad ptr, since the details | 23 // We have to in order to read it out, or we have a bad ptr, since the details |
| 24 // are a reference on the stack. | 24 // are a reference on the stack. |
| 25 class TokenAvailableTracker : public TestNotificationTracker { | 25 class TokenAvailableTracker : public TestNotificationTracker { |
| 26 public: | 26 public: |
| 27 TokenAvailableTracker(); |
| 28 virtual ~TokenAvailableTracker(); |
| 29 |
| 27 const TokenService::TokenAvailableDetails& details() { | 30 const TokenService::TokenAvailableDetails& details() { |
| 28 return details_; | 31 return details_; |
| 29 } | 32 } |
| 30 | 33 |
| 31 private: | 34 private: |
| 32 virtual void Observe(NotificationType type, | 35 virtual void Observe(NotificationType type, |
| 33 const NotificationSource& source, | 36 const NotificationSource& source, |
| 34 const NotificationDetails& details) { | 37 const NotificationDetails& details); |
| 35 TestNotificationTracker::Observe(type, source, details); | |
| 36 if (type == NotificationType::TOKEN_AVAILABLE) { | |
| 37 Details<const TokenService::TokenAvailableDetails> full = details; | |
| 38 details_ = *full.ptr(); | |
| 39 } | |
| 40 } | |
| 41 | 38 |
| 42 TokenService::TokenAvailableDetails details_; | 39 TokenService::TokenAvailableDetails details_; |
| 43 }; | 40 }; |
| 44 | 41 |
| 45 class TokenFailedTracker : public TestNotificationTracker { | 42 class TokenFailedTracker : public TestNotificationTracker { |
| 46 public: | 43 public: |
| 44 TokenFailedTracker(); |
| 45 virtual ~TokenFailedTracker(); |
| 46 |
| 47 const TokenService::TokenRequestFailedDetails& details() { | 47 const TokenService::TokenRequestFailedDetails& details() { |
| 48 return details_; | 48 return details_; |
| 49 } | 49 } |
| 50 | 50 |
| 51 private: | 51 private: |
| 52 virtual void Observe(NotificationType type, | 52 virtual void Observe(NotificationType type, |
| 53 const NotificationSource& source, | 53 const NotificationSource& source, |
| 54 const NotificationDetails& details) { | 54 const NotificationDetails& details); |
| 55 TestNotificationTracker::Observe(type, source, details); | |
| 56 if (type == NotificationType::TOKEN_REQUEST_FAILED) { | |
| 57 Details<const TokenService::TokenRequestFailedDetails> full = details; | |
| 58 details_ = *full.ptr(); | |
| 59 } | |
| 60 } | |
| 61 | 55 |
| 62 TokenService::TokenRequestFailedDetails details_; | 56 TokenService::TokenRequestFailedDetails details_; |
| 63 }; | 57 }; |
| 64 | 58 |
| 65 class TokenServiceTestHarness : public testing::Test { | 59 class TokenServiceTestHarness : public testing::Test { |
| 66 public: | 60 public: |
| 67 TokenServiceTestHarness(); | 61 TokenServiceTestHarness(); |
| 68 virtual ~TokenServiceTestHarness(); | 62 virtual ~TokenServiceTestHarness(); |
| 69 | 63 |
| 70 virtual void SetUp(); | 64 virtual void SetUp(); |
| 71 | 65 |
| 72 virtual void TearDown(); | 66 virtual void TearDown(); |
| 73 | 67 |
| 74 void WaitForDBLoadCompletion(); | 68 void WaitForDBLoadCompletion(); |
| 75 | 69 |
| 76 MessageLoopForUI message_loop_; | 70 MessageLoopForUI message_loop_; |
| 77 BrowserThread ui_thread_; // Mostly so DCHECKS pass. | 71 BrowserThread ui_thread_; // Mostly so DCHECKS pass. |
| 78 BrowserThread db_thread_; // WDS on here | 72 BrowserThread db_thread_; // WDS on here |
| 79 | 73 |
| 80 TokenService service_; | 74 TokenService service_; |
| 81 TokenAvailableTracker success_tracker_; | 75 TokenAvailableTracker success_tracker_; |
| 82 TokenFailedTracker failure_tracker_; | 76 TokenFailedTracker failure_tracker_; |
| 83 GaiaAuthConsumer::ClientLoginResult credentials_; | 77 GaiaAuthConsumer::ClientLoginResult credentials_; |
| 84 scoped_ptr<TestingProfile> profile_; | 78 scoped_ptr<TestingProfile> profile_; |
| 85 }; | 79 }; |
| 86 | 80 |
| 87 #endif // CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ | 81 #endif // CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ |
| OLD | NEW |