Home | History | Annotate | Download | only in browser
      1 // Copyright 2013 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 #include "base/compiler_specific.h"
      6 #include "base/strings/utf_string_conversions.h"
      7 #include "components/autofill/core/browser/password_autofill_manager.h"
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 
     10 namespace {
     11 
     12 // The name of the username/password element in the form.
     13 const char* const kUsernameName = "username";
     14 const char* const kInvalidUsername = "no-username";
     15 const char* const kPasswordName = "password";
     16 
     17 const char* const kAliceUsername = "alice";
     18 const char* const kAlicePassword = "password";
     19 
     20 const char* const kValue = "password";
     21 
     22 }  // namespace
     23 
     24 namespace autofill {
     25 
     26 class PasswordAutofillManagerTest : public testing::Test {
     27  protected:
     28   PasswordAutofillManagerTest() : password_autofill_manager_(NULL) {}
     29 
     30   virtual void SetUp() OVERRIDE {
     31     // Add a preferred login and an additional login to the FillData.
     32     base::string16 username1 = ASCIIToUTF16(kAliceUsername);
     33     base::string16 password1 = ASCIIToUTF16(kAlicePassword);
     34 
     35     username_field_.name = ASCIIToUTF16(kUsernameName);
     36     username_field_.value = username1;
     37     fill_data_.basic_data.fields.push_back(username_field_);
     38 
     39     FormFieldData password_field;
     40     password_field.name = ASCIIToUTF16(kPasswordName);
     41     password_field.value = password1;
     42     fill_data_.basic_data.fields.push_back(password_field);
     43 
     44     password_autofill_manager_.AddPasswordFormMapping(username_field_,
     45                                                       fill_data_);
     46   }
     47 
     48   PasswordAutofillManager* password_autofill_manager() {
     49     return &password_autofill_manager_;
     50   }
     51 
     52   const FormFieldData& username_field() { return username_field_; }
     53 
     54  private:
     55   PasswordFormFillData fill_data_;
     56   FormFieldData username_field_;
     57 
     58   PasswordAutofillManager password_autofill_manager_;
     59 };
     60 
     61 TEST_F(PasswordAutofillManagerTest, DidAcceptAutofillSuggestion) {
     62   EXPECT_TRUE(password_autofill_manager()->DidAcceptAutofillSuggestion(
     63       username_field(), ASCIIToUTF16(kAliceUsername)));
     64   EXPECT_FALSE(password_autofill_manager()->DidAcceptAutofillSuggestion(
     65       username_field(), ASCIIToUTF16(kInvalidUsername)));
     66 
     67   FormFieldData invalid_username_field;
     68   invalid_username_field.name = ASCIIToUTF16(kInvalidUsername);
     69 
     70   EXPECT_FALSE(password_autofill_manager()->DidAcceptAutofillSuggestion(
     71       invalid_username_field, ASCIIToUTF16(kAliceUsername)));
     72 
     73   password_autofill_manager()->Reset();
     74   EXPECT_FALSE(password_autofill_manager()->DidAcceptAutofillSuggestion(
     75       username_field(), ASCIIToUTF16(kAliceUsername)));
     76 }
     77 
     78 }  // namespace autofill
     79