REPP: Authentication test

This commit is contained in:
Karl Erik Õunapuu 2020-10-19 16:02:18 +03:00
parent 2a136a776f
commit 87dff41a4e
No known key found for this signature in database
GPG key ID: C9DD647298A34764
5 changed files with 58 additions and 4 deletions

View file

@ -76,7 +76,8 @@ module Repp
def basic_token def basic_token
pattern = /^Basic / pattern = /^Basic /
header = request.headers['Authorization'] header = request.headers['Authorization']
header.gsub(pattern, '') if header&.match(pattern) header = header.gsub(pattern, '') if header&.match(pattern)
header.strip
end end
def authenticate_user def authenticate_user
@ -85,9 +86,12 @@ module Repp
return if @current_user return if @current_user
render(json: { errors: [{ base: ['Not authorized'] }] }, status: :unauthorized) raise(ArgumentError)
rescue NoMethodError rescue NoMethodError, ArgumentError
render(json: { errors: [{ base: ['Not authorized'] }] }, status: :unauthorized) render(
json: { code: 2202, message: 'Invalid authorization information' },
status: :unauthorized
)
end end
def check_ip_restriction def check_ip_restriction

View file

@ -0,0 +1,26 @@
require 'test_helper'
class ReppV1BaseTest < ActionDispatch::IntegrationTest
def setup
@registrant = users(:api_bestnames)
token = Base64.encode64("#{@registrant.username}:#{@registrant.plain_text_password}")
token = "Basic #{token}"
@auth_headers = { 'Authorization' => token }
end
def test_unauthorized_user_has_no_access
get repp_v1_contacts_path
response_json = JSON.parse(response.body, symbolize_names: true)
assert_response :unauthorized
assert_equal 'Invalid authorization information', response_json[:message]
end
def test_authenticates_valid_user
get repp_v1_contacts_path, headers: @auth_headers
response_json = JSON.parse(response.body, symbolize_names: true)
assert_response :ok
end
end

View file

@ -0,0 +1,24 @@
require 'test_helper'
class ReppV1ContactsTest < ActionDispatch::IntegrationTest
def setup
@auction = auctions(:one)
@auction.update!(uuid: '1b3ee442-e8fe-4922-9492-8fcb9dccc69c',
domain: 'auction.test',
status: Auction.statuses[:started])
end
def test_get_index
get repp_v1_contacts_path
response_json = JSON.parse(response.body, symbolize_names: true)
puts response_json
assert response_json[:count] == 1
expected_response = [{ domain_name: @auction.domain,
punycode_domain_name: @auction.domain }]
assert_equal expected_response, response_json[:auctions]
end
end