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. 25class TokenAvailableTracker : public TestNotificationTracker { 26 public: 27 TokenAvailableTracker(); 28 virtual ~TokenAvailableTracker(); 29 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 42class TokenFailedTracker : public TestNotificationTracker { 43 public: 44 TokenFailedTracker(); 45 virtual ~TokenFailedTracker(); 46 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 59class 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