Home | History | Annotate | Download | only in gaia
      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 
     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 
     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