require 'test_helper'

class PasswordValidationTest < BrowserIntegrationTest

  test "password confirmation is validated" do
    password = SecureRandom.base64
    submit_signup_form password: password, confirmation: password + 'a'
    assert page.has_content? "does not match."
    assert_equal '/signup', current_path
    assert_error_for 'srp_password_confirmation'
  end

  test "password needs to be at least 8 chars long" do
    submit_signup_form password: SecureRandom.base64[0,7]
    assert page.has_content? "needs to be at least 8 characters long"
    assert_equal '/signup', current_path
    assert_error_for 'srp_password'
  end

  def submit_signup_form(username: nil, password: nil, confirmation: nil)
    username ||= "test_#{SecureRandom.urlsafe_base64}".downcase
    password ||= SecureRandom.base64
    confirmation ||= password
    visit '/signup'
    fill_in 'Username', with: username
    fill_in 'Password', with: password, match: :prefer_exact
    fill_in 'Password confirmation', with: confirmation
    click_on 'Sign Up'
  end

  def assert_error_for(id)
    assert page.has_selector? ".has-error ##{id}"
  end
end