Skip to content

Commit

Permalink
Add a few tests for disabled auth #54
Browse files Browse the repository at this point in the history
Also fix rubocop violations.
  • Loading branch information
oneiros committed Aug 16, 2022
1 parent b9c7da7 commit 8d44a16
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 41 deletions.
2 changes: 1 addition & 1 deletion app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def current_user

def authentication_required
unless current_user
if User.none? && !(Rails.configuration.hdm.authentication_disabled)
if User.none? && !Rails.configuration.hdm.authentication_disabled
redirect_to new_user_path, notice: 'Please create an admin user first.'
else
redirect_to login_path
Expand Down
4 changes: 1 addition & 3 deletions app/models/dummy_user.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
class DummyUser
def initialize
unless Rails.configuration.hdm.authentication_disabled
raise "cannot be used unless authentication is disabled"
end
raise "cannot be used unless authentication is disabled" unless Rails.configuration.hdm.authentication_disabled
end

def id
Expand Down
107 changes: 70 additions & 37 deletions test/integration/required_authentication_test.rb
Original file line number Diff line number Diff line change
@@ -1,52 +1,85 @@
require "test_helper"

class RequiredAuthenticationTest < ActionDispatch::IntegrationTest
class AuthenticationEnabledTest < ActionDispatch::IntegrationTest
test "authentication requirements for environments" do
authentication_required_for :get, environments_path
end

test "authentication requirements for environments" do
authentication_required_for :get, environments_path
end
test "authentication requiremens for nodes" do
authentication_required_for :get, environment_nodes_path("development")
end

test "authentication requiremens for nodes" do
authentication_required_for :get, environment_nodes_path("development")
end
test "authentication requirements for keys" do
authentication_required_for :get,
environment_node_keys_path("development", "testhost")
authentication_required_for :get,
environment_node_key_path("development", "testhost", "hdm::integer")
authentication_required_for :patch,
environment_node_key_path("development", "testhost", "hdm::integer")
authentication_required_for :delete,
environment_node_key_path("development", "testhost", "hdm::integer")
end

test "authentication requirements for keys" do
authentication_required_for :get,
environment_node_keys_path("development", "testhost")
authentication_required_for :get,
environment_node_key_path("development", "testhost", "hdm::integer")
authentication_required_for :patch,
environment_node_key_path("development", "testhost", "hdm::integer")
authentication_required_for :delete,
environment_node_key_path("development", "testhost", "hdm::integer")
end
test "authentication requirements for decrypted values" do
authentication_required_for :post,
environment_node_decrypted_values_path("development", "testhost")
end

test "authentication requirements for decrypted values" do
authentication_required_for :post,
environment_node_decrypted_values_path("development", "testhost")
end
test "authentication requirements for encrypted values" do
authentication_required_for :post,
environment_node_encrypted_values_path("development", "testhost")
end

test "authentication requirements for encrypted values" do
authentication_required_for :post,
environment_node_encrypted_values_path("development", "testhost")
end
test "authentication requirements for users" do
user = FactoryBot.create(:user, admin: true)

authentication_required_for :get, users_path
authentication_required_for :get, user_path(user)
authentication_required_for :get, new_user_path
authentication_required_for :post, users_path
authentication_required_for :get, edit_user_path(user)
authentication_required_for :patch, user_path(user)
authentication_required_for :delete, user_path(user)
end

test "authentication requirements for users" do
user = FactoryBot.create(:user, admin: true)
private

authentication_required_for :get, users_path
authentication_required_for :get, user_path(user)
authentication_required_for :get, new_user_path
authentication_required_for :post, users_path
authentication_required_for :get, edit_user_path(user)
authentication_required_for :patch, user_path(user)
authentication_required_for :delete, user_path(user)
def authentication_required_for(method, path)
send(method, path)
assert_redirected_to login_path
end
end

private
class AuthenticationDisabledTest < ActionDispatch::IntegrationTest
setup do
Rails.configuration.hdm["authentication_disabled"] = true
end

teardown do
Rails.configuration.hdm["authentication_disabled"] = nil
end

test "authentication requirements for environments" do
no_authentication_required_for :get, environments_path
end

test "authentication requiremens for nodes" do
no_authentication_required_for :get, environment_nodes_path("development")
end

test "authentication requirements for keys" do
no_authentication_required_for :get,
environment_node_keys_path("development", "testhost")
no_authentication_required_for :get,
environment_node_key_path("development", "testhost", "hdm::integer")
end

private

def authentication_required_for(method, path)
send(method, path)
assert_redirected_to login_path
def no_authentication_required_for(method, path)
send(method, path)
assert_response :success
end
end
end

0 comments on commit 8d44a16

Please sign in to comment.