From ae7846e46e817b48a5692d50736999c86241cbdf Mon Sep 17 00:00:00 2001 From: Jez Caudle Date: Tue, 14 May 2024 14:54:32 +0100 Subject: [PATCH] Added tests for Credentials Removed routes from credentials that aren't used along with controller actions --- config/routes.rb | 2 +- .../credentials_controller_test.rb | 65 ++++++++++++++----- test/controllers/domains_controller_test.rb | 2 +- test/fixtures/credentials.yml | 2 + test/models/credential_test.rb | 2 +- 5 files changed, 52 insertions(+), 21 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index f8113a7..2199c55 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,7 @@ Rails.application.routes.draw do resources :domains do - resources :credentials + resources :credentials, only: [ :new, :create, :edit, :update, :destroy] resources :virtuals end diff --git a/test/controllers/credentials_controller_test.rb b/test/controllers/credentials_controller_test.rb index 4f11874..f87f20d 100644 --- a/test/controllers/credentials_controller_test.rb +++ b/test/controllers/credentials_controller_test.rb @@ -1,49 +1,78 @@ require "test_helper" class CredentialsControllerTest < ActionDispatch::IntegrationTest + include Devise::Test::IntegrationHelpers + setup do @credential = credentials(:one) + @domain = domains(:one) end - test "should get index" do - get credentials_url - assert_response :success + test "should not get new" do + get new_domain_credential_url(@domain.id) assert_redirected_to new_user_session_path end test "should get new" do - get new_credential_url + sign_in users(:bob) + get new_domain_credential_url(@domain.id) assert_response :success end - test "should create credential" do + test "should not create credential because we are not logged in" do + assert_no_difference("Credential.count") do + post domain_credentials_url(@domain.id), params: { credential: { email: "steve", password: "ThePassword12345%" } } + end + + assert_redirected_to new_user_session_path + end + + test "should create credential because we are logged in" do + sign_in users(:bob) assert_difference("Credential.count") do - post credentials_url, params: { credential: { email: @credential.email, password: @credential.password } } + post domain_credentials_url(@domain.id), params: { credential: { email: "steve", password: "ThePassword12345%" } } end - assert_redirected_to credential_url(Credential.last) + assert_redirected_to domain_path(@domain.id) end - test "should show credential" do - get credential_url(@credential) + test "should get edit not get edit because we are not logged in" do + get edit_domain_credential_url(@domain,@credential) + assert_redirected_to new_user_session_path + end + + test "should get edit because we are logged in" do + sign_in users(:bob) + get edit_domain_credential_url(@domain,@credential) assert_response :success end - test "should get edit" do - get edit_credential_url(@credential) - assert_response :success + test "should not update credential because we are not logged in" do + patch domain_credential_url(@domain,@credential), params: { credential: { email: @credential.email, password: @credential.password } } + assert_redirected_to new_user_session_path end - test "should update credential" do - patch credential_url(@credential), params: { credential: { email: @credential.email, password: @credential.password } } - assert_redirected_to credential_url(@credential) + test "should update credential because we are logged in" do + sign_in users(:bob) + patch domain_credential_url(@domain,@credential), params: { credential: { email: @credential.email, password: @credential.password } } + assert_redirected_to domain_url(@domain) end - test "should destroy credential" do + test "should not destroy credential because we are not logged in" do + assert_no_difference("Credential.count") do + delete domain_credential_url(@domain,@credential) + end + + assert_redirected_to new_user_session_path + end + + test "should destroy credential because we are logged in" do + sign_in users(:bob) assert_difference("Credential.count", -1) do - delete credential_url(@credential) + delete domain_credential_url(@domain,@credential) end - assert_redirected_to credentials_url + assert_redirected_to domain_url(@domain) end + end diff --git a/test/controllers/domains_controller_test.rb b/test/controllers/domains_controller_test.rb index 46f501d..eb21c29 100644 --- a/test/controllers/domains_controller_test.rb +++ b/test/controllers/domains_controller_test.rb @@ -6,7 +6,7 @@ class DomainsControllerTest < ActionDispatch::IntegrationTest @domain = domains(:one) end - test "not should get index because we are not logged in" do + test "not should get index because user not logged in" do get domains_url assert_redirected_to new_user_session_path end diff --git a/test/fixtures/credentials.yml b/test/fixtures/credentials.yml index 4e9845d..7c93971 100644 --- a/test/fixtures/credentials.yml +++ b/test/fixtures/credentials.yml @@ -3,7 +3,9 @@ one: email: bob@example.net password: MyString + domain: one two: email: alice@example.org password: MyString + domain: two diff --git a/test/models/credential_test.rb b/test/models/credential_test.rb index 7c47f6e..3011dc2 100644 --- a/test/models/credential_test.rb +++ b/test/models/credential_test.rb @@ -19,7 +19,7 @@ class CredentialTest < ActiveSupport::TestCase end test "domain added to name" do - @c = Credential.new(email: "jez", password: "1234567&ab", domain_id: domains(:one).id) + @c = Credential.new(email: "jez@#{domains(:one).domain}", password: "1234567&ab", domain_id: domains(:one).id) assert @c.save end end