// Copyright 2013 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/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "content/public/common/password_form.h" #include "content/public/renderer/password_form_conversion_utils.h" #include "content/public/test/render_view_test.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/WebKit/public/platform/WebVector.h" #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebFormElement.h" #include "third_party/WebKit/public/web/WebPasswordFormData.h" using WebKit::WebFormElement; using WebKit::WebFrame; using WebKit::WebPasswordFormData; using WebKit::WebVector; namespace content { namespace { class PasswordFormConversionUtilsTest : public RenderViewTest { public: PasswordFormConversionUtilsTest() : RenderViewTest() {} virtual ~PasswordFormConversionUtilsTest() {} private: DISALLOW_COPY_AND_ASSIGN(PasswordFormConversionUtilsTest); }; } // namespace TEST_F(PasswordFormConversionUtilsTest, ValidWebFormElementToPasswordForm) { LoadHTML("
" " " " " " " "
"); WebFrame* frame = GetMainFrame(); ASSERT_NE(static_cast(NULL), frame); WebVector forms; frame->document().forms(forms); ASSERT_EQ(1U, forms.size()); WebPasswordFormData web_password_form(forms[0]); ASSERT_TRUE(web_password_form.isValid()); scoped_ptr password_form = CreatePasswordForm(forms[0]); ASSERT_NE(static_cast(NULL), password_form.get()); EXPECT_EQ("data:", password_form->signon_realm); EXPECT_EQ(GURL("http://cnn.com"), password_form->action); EXPECT_EQ(UTF8ToUTF16("username"), password_form->username_element); EXPECT_EQ(UTF8ToUTF16("johnsmith"), password_form->username_value); EXPECT_EQ(UTF8ToUTF16("password"), password_form->password_element); EXPECT_EQ(UTF8ToUTF16("secret"), password_form->password_value); EXPECT_EQ(PasswordForm::SCHEME_HTML, password_form->scheme); EXPECT_FALSE(password_form->ssl_valid); EXPECT_FALSE(password_form->preferred); EXPECT_FALSE(password_form->blacklisted_by_user); EXPECT_EQ(PasswordForm::TYPE_MANUAL, password_form->type); } TEST_F(PasswordFormConversionUtilsTest, InvalidWebFormElementToPasswordForm) { LoadHTML("
" " " " " " " "
"); WebFrame* frame = GetMainFrame(); ASSERT_NE(static_cast(NULL), frame); WebVector forms; frame->document().forms(forms); ASSERT_EQ(1U, forms.size()); WebPasswordFormData web_password_form(forms[0]); ASSERT_FALSE(web_password_form.isValid()); scoped_ptr password_form = CreatePasswordForm(forms[0]); EXPECT_EQ(static_cast(NULL), password_form.get()); } } // namespace content