Index: chrome/browser/extensions/api/identity/web_auth_flow_unittest.cc |
diff --git a/chrome/browser/extensions/api/identity/web_auth_flow_unittest.cc b/chrome/browser/extensions/api/identity/web_auth_flow_unittest.cc |
deleted file mode 100644 |
index 5d376ca0014f4669bc743ead847e07b1c1c662c8..0000000000000000000000000000000000000000 |
--- a/chrome/browser/extensions/api/identity/web_auth_flow_unittest.cc |
+++ /dev/null |
@@ -1,184 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/message_loop.h" |
-#include "chrome/browser/extensions/api/identity/web_auth_flow.h" |
-#include "chrome/browser/ui/host_desktop.h" |
-#include "chrome/test/base/chrome_render_view_host_test_harness.h" |
-#include "chrome/test/base/testing_profile.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/test/test_browser_thread.h" |
-#include "content/public/test/web_contents_tester.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using content::BrowserThread; |
-using content::TestBrowserThread; |
-using content::WebContents; |
-using content::WebContentsTester; |
-using extensions::WebAuthFlow; |
-using testing::Return; |
-using testing::ReturnRef; |
- |
-namespace { |
- |
-class MockDelegate : public WebAuthFlow::Delegate { |
- public: |
- MOCK_METHOD1(OnAuthFlowFailure, void(WebAuthFlow::Failure failure)); |
- MOCK_METHOD1(OnAuthFlowURLChange, void(const GURL& redirect_url)); |
-}; |
- |
-class MockWebAuthFlow : public WebAuthFlow { |
- public: |
- MockWebAuthFlow( |
- WebAuthFlow::Delegate* delegate, |
- Profile* profile, |
- const GURL& provider_url, |
- bool interactive) |
- : WebAuthFlow( |
- delegate, |
- profile, |
- provider_url, |
- interactive ? WebAuthFlow::INTERACTIVE : WebAuthFlow::SILENT, |
- gfx::Rect(), |
- chrome::GetActiveDesktop()), |
- profile_(profile), |
- web_contents_(NULL), |
- window_shown_(false) { } |
- |
- virtual WebContents* CreateWebContents() OVERRIDE { |
- CHECK(!web_contents_); |
- web_contents_ = WebContentsTester::CreateTestWebContents(profile_, NULL); |
- return web_contents_; |
- } |
- |
- virtual void ShowAuthFlowPopup() OVERRIDE { |
- window_shown_ = true; |
- } |
- |
- bool HasWindow() const { |
- return window_shown_; |
- } |
- |
- void DestroyWebContents() { |
- CHECK(web_contents_); |
- delete web_contents_; |
- } |
- |
- virtual ~MockWebAuthFlow() { } |
- |
- private: |
- Profile* profile_; |
- WebContents* web_contents_; |
- bool window_shown_; |
-}; |
- |
-} // namespace |
- |
-class WebAuthFlowTest : public ChromeRenderViewHostTestHarness { |
- protected: |
- WebAuthFlowTest() |
- : thread_(BrowserThread::UI, &message_loop_) { |
- } |
- |
- virtual void SetUp() { |
- ChromeRenderViewHostTestHarness::SetUp(); |
- } |
- |
- virtual void TearDown() { |
- // |flow_| must be reset before ChromeRenderViewHostTestHarness::TearDown(), |
- // because |flow_| deletes the WebContents it owns via |
- // MessageLoop::DeleteSoon(). |
- flow_.reset(); |
- ChromeRenderViewHostTestHarness::TearDown(); |
- } |
- |
- void CreateAuthFlow(const GURL& url, |
- bool interactive) { |
- flow_.reset(new MockWebAuthFlow( |
- &delegate_, profile(), url, interactive)); |
- } |
- |
- WebAuthFlow* flow_base() { |
- return flow_.get(); |
- } |
- |
- void CallBeforeUrlLoaded(const GURL& url) { |
- flow_base()->BeforeUrlLoaded(url); |
- } |
- |
- void CallAfterUrlLoaded() { |
- flow_base()->AfterUrlLoaded(); |
- } |
- |
- TestBrowserThread thread_; |
- MockDelegate delegate_; |
- scoped_ptr<MockWebAuthFlow> flow_; |
-}; |
- |
-TEST_F(WebAuthFlowTest, SilentRedirectToChromiumAppUrlNonInteractive) { |
- GURL url("https://accounts.google.com/o/oauth2/auth"); |
- GURL result("https://abcdefghij.chromiumapp.org/google_cb"); |
- |
- CreateAuthFlow(url, false); |
- EXPECT_CALL(delegate_, OnAuthFlowURLChange(result)).Times(1); |
- flow_->Start(); |
- CallBeforeUrlLoaded(result); |
-} |
- |
-TEST_F(WebAuthFlowTest, SilentRedirectToChromiumAppUrlInteractive) { |
- GURL url("https://accounts.google.com/o/oauth2/auth"); |
- GURL result("https://abcdefghij.chromiumapp.org/google_cb"); |
- |
- CreateAuthFlow(url, true); |
- EXPECT_CALL(delegate_, OnAuthFlowURLChange(result)).Times(1); |
- flow_->Start(); |
- CallBeforeUrlLoaded(result); |
-} |
- |
-TEST_F(WebAuthFlowTest, SilentRedirectToChromeExtensionSchemeUrl) { |
- GURL url("https://accounts.google.com/o/oauth2/auth"); |
- GURL result("chrome-extension://abcdefghij/google_cb"); |
- |
- CreateAuthFlow(url, true); |
- EXPECT_CALL(delegate_, OnAuthFlowURLChange(result)).Times(1); |
- flow_->Start(); |
- CallBeforeUrlLoaded(result); |
-} |
- |
-TEST_F(WebAuthFlowTest, NeedsUIButNonInteractive) { |
- GURL url("https://accounts.google.com/o/oauth2/auth"); |
- |
- CreateAuthFlow(url, false); |
- EXPECT_CALL( |
- delegate_, OnAuthFlowFailure(WebAuthFlow::INTERACTION_REQUIRED)).Times(1); |
- flow_->Start(); |
- CallAfterUrlLoaded(); |
-} |
- |
-TEST_F(WebAuthFlowTest, UIResultsInSuccess) { |
- GURL url("https://accounts.google.com/o/oauth2/auth"); |
- GURL result("chrome-extension://abcdefghij/google_cb"); |
- |
- CreateAuthFlow(url, true); |
- EXPECT_CALL(delegate_, OnAuthFlowURLChange(result)).Times(1); |
- flow_->Start(); |
- CallAfterUrlLoaded(); |
- EXPECT_TRUE(flow_->HasWindow()); |
- CallBeforeUrlLoaded(result); |
-} |
- |
-TEST_F(WebAuthFlowTest, UIClosedByUser) { |
- GURL url("https://accounts.google.com/o/oauth2/auth"); |
- GURL result("chrome-extension://abcdefghij/google_cb"); |
- |
- CreateAuthFlow(url, true); |
- EXPECT_CALL( |
- delegate_, OnAuthFlowFailure(WebAuthFlow::WINDOW_CLOSED)).Times(1); |
- flow_->Start(); |
- CallAfterUrlLoaded(); |
- EXPECT_TRUE(flow_->HasWindow()); |
- flow_->DestroyWebContents(); |
-} |