1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 5 // This file defines a unit test harness for the profile's token service. 6 7 #ifndef CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ 8 #define CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ 9 #pragma once 10 11 #include "base/synchronization/waitable_event.h" 12 #include "chrome/browser/net/gaia/token_service.h" 13 #include "chrome/browser/webdata/web_data_service.h" 14 #include "chrome/common/net/gaia/gaia_auth_consumer.h" 15 #include "chrome/test/signaling_task.h" 16 #include "chrome/test/test_notification_tracker.h" 17 #include "chrome/test/testing_profile.h" 18 #include "content/common/notification_details.h" 19 #include "content/common/notification_source.h" 20 #include "testing/gtest/include/gtest/gtest.h" 21 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 24 // are a reference on the stack. 25 class TokenAvailableTracker : public TestNotificationTracker { 26 public: 27 TokenAvailableTracker(); 28 virtual ~TokenAvailableTracker(); 29 details()30 const TokenService::TokenAvailableDetails& details() { 31 return details_; 32 } 33 34 private: 35 virtual void Observe(NotificationType type, 36 const NotificationSource& source, 37 const NotificationDetails& details); 38 39 TokenService::TokenAvailableDetails details_; 40 }; 41 42 class TokenFailedTracker : public TestNotificationTracker { 43 public: 44 TokenFailedTracker(); 45 virtual ~TokenFailedTracker(); 46 details()47 const TokenService::TokenRequestFailedDetails& details() { 48 return details_; 49 } 50 51 private: 52 virtual void Observe(NotificationType type, 53 const NotificationSource& source, 54 const NotificationDetails& details); 55 56 TokenService::TokenRequestFailedDetails details_; 57 }; 58 59 class TokenServiceTestHarness : public testing::Test { 60 public: 61 TokenServiceTestHarness(); 62 virtual ~TokenServiceTestHarness(); 63 64 virtual void SetUp(); 65 66 virtual void TearDown(); 67 68 void WaitForDBLoadCompletion(); 69 70 MessageLoopForUI message_loop_; 71 BrowserThread ui_thread_; // Mostly so DCHECKS pass. 72 BrowserThread db_thread_; // WDS on here 73 74 TokenService service_; 75 TokenAvailableTracker success_tracker_; 76 TokenFailedTracker failure_tracker_; 77 GaiaAuthConsumer::ClientLoginResult credentials_; 78 scoped_ptr<TestingProfile> profile_; 79 }; 80 81 #endif // CHROME_BROWSER_NET_GAIA_TOKEN_SERVICE_UNITTEST_H_ 82