Sha256: 79a9f596a6fcc69796463471eeeb4c92bb77c5c5dd6372b5b08a05e01eaad31f

Contents?: true

Size: 1.72 KB

Versions: 5

Compression:

Stored size: 1.72 KB

Contents

require 'test_helper'

class HttpAuthenticationTest < ActionController::IntegrationTest

  test 'sign in should authenticate with http' do
    sign_in_as_new_user_with_http
    assert_response :success
    assert_match '<email>user@test.com</email>', response.body
    assert warden.authenticated?(:user)
  end

  test 'returns a custom response with www-authenticate header on failures' do
    sign_in_as_new_user_with_http("unknown")
    assert_equal 401, status
    assert_equal 'Basic realm="Application"', headers["WWW-Authenticate"]
  end

  test 'uses the request format as response content type' do
    sign_in_as_new_user_with_http("unknown")
    assert_equal 401, status
    assert_equal "application/xml; charset=utf-8", headers["Content-Type"]
    assert_match "<error>Invalid email or password.</error>", response.body
  end

  test 'returns a custom response with www-authenticate and chosen realm' do
    swap Devise, :http_authentication_realm => "MyApp" do
      sign_in_as_new_user_with_http("unknown")
      assert_equal 401, status
      assert_equal 'Basic realm="MyApp"', headers["WWW-Authenticate"]
    end
  end

  test 'sign in should authenticate with http even with specific authentication keys' do
    swap Devise, :authentication_keys => [:username] do
      sign_in_as_new_user_with_http("usertest")
      assert_response :success
      assert_match '<email>user@test.com</email>', response.body
      assert warden.authenticated?(:user)
    end
  end

  private

    def sign_in_as_new_user_with_http(username="user@test.com", password="123456")
      user = create_user
      get users_path(:format => :xml), {}, "HTTP_AUTHORIZATION" => "Basic #{ActiveSupport::Base64.encode64("#{username}:#{password}")}"
      user
    end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
devise-1.1.2 test/integration/http_authenticatable_test.rb
devise-1.1.1 test/integration/http_authenticatable_test.rb
devise-1.1.0 test/integration/http_authenticatable_test.rb
namxam-devise-1.1.0.win test/integration/http_authenticatable_test.rb
devise-1.1.rc2 test/integration/http_authenticatable_test.rb