mirror of
https://github.com/Evolix/chexpire.git
synced 2024-06-26 19:12:53 +02:00
154 lines
4.6 KiB
Ruby
154 lines
4.6 KiB
Ruby
# Copyright (C) 2018 Colin Darie <colin@darie.eu>, 2018 Evolix <info@evolix.fr>
|
|
# License: GNU AGPL-3+ (see full text in LICENSE file)
|
|
|
|
require "test_helper"
|
|
|
|
class ChecksControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
@user = create(:user)
|
|
login_as(@user)
|
|
end
|
|
|
|
test "no logged users are redirected to signin form" do
|
|
logout
|
|
get new_check_path
|
|
assert_redirected_to new_user_session_path
|
|
end
|
|
|
|
test "new without kind does not trigger an error" do
|
|
get new_check_path
|
|
assert_response :success
|
|
end
|
|
|
|
test "new with kind domain does not trigger an error" do
|
|
get new_check_path(kind: :domain)
|
|
assert_response :success
|
|
end
|
|
|
|
test "new with kind ssl does not trigger an error" do
|
|
get new_check_path(kind: :ssl)
|
|
assert_response :success
|
|
end
|
|
|
|
test "new with an invalid kind returns an error" do
|
|
get new_check_path(kind: :invalid)
|
|
assert_response :not_found
|
|
end
|
|
|
|
test "checks are ordered by default by expiry date sort" do
|
|
c1 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
|
|
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
|
|
c3 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
|
|
|
|
get checks_path
|
|
assert_equal [c3, c2, c1], current_checks
|
|
end
|
|
|
|
test "checks are ordered by expiry date asc" do
|
|
c1 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
|
|
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
|
|
c3 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
|
|
|
|
get checks_path(sort: :domain_expires_at_asc)
|
|
assert_equal [c3, c2, c1], current_checks
|
|
end
|
|
|
|
test "checks are ordered by reverse expiring date" do
|
|
c1 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
|
|
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
|
|
c3 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
|
|
|
|
get checks_path(sort: :domain_expires_at_desc)
|
|
assert_equal [c3, c2, c1], current_checks
|
|
end
|
|
|
|
test "checks are ordered by domain name asc" do
|
|
c1 = create(:check, user: @user, domain: "a")
|
|
c2 = create(:check, user: @user, domain: "b")
|
|
c3 = create(:check, user: @user, domain: "c")
|
|
|
|
get checks_path(sort: :domain_asc)
|
|
assert_equal [c1, c2, c3], current_checks
|
|
end
|
|
|
|
test "checks are ordered by domain name desc" do
|
|
c1 = create(:check, user: @user, domain: "a")
|
|
c2 = create(:check, user: @user, domain: "b")
|
|
c3 = create(:check, user: @user, domain: "c")
|
|
|
|
get checks_path(sort: :domain_desc)
|
|
assert_equal [c3, c2, c1], current_checks
|
|
end
|
|
|
|
test "invalid sort fallback to default sort" do
|
|
c1 = create(:check, user: @user, domain_expires_at: 20.days.from_now)
|
|
c2 = create(:check, user: @user, domain_expires_at: 10.days.from_now)
|
|
c3 = create(:check, user: @user, domain_expires_at: 1.day.from_now)
|
|
|
|
get checks_path(sort: :invalid_sort_asc)
|
|
assert_equal [c3, c2, c1], current_checks
|
|
end
|
|
|
|
test "checks are filtered by domain kind" do
|
|
c1 = create(:check, :domain, user: @user)
|
|
c2 = create(:check, :domain, user: @user)
|
|
create(:check, :ssl, user: @user)
|
|
|
|
get checks_path(kind: :domain)
|
|
assert_equal [c1, c2], current_checks
|
|
end
|
|
|
|
test "checks are filtered by ssl kind" do
|
|
create(:check, :domain, user: @user)
|
|
create(:check, :domain, user: @user)
|
|
c3 = create(:check, :ssl, user: @user)
|
|
|
|
get checks_path(kind: :ssl)
|
|
assert_equal [c3], current_checks
|
|
end
|
|
|
|
test "checks are filtered by domain name" do
|
|
c1 = create(:check, user: @user, domain: "abc")
|
|
c2 = create(:check, user: @user, domain: "bcde")
|
|
create(:check, user: @user, domain: "hijk")
|
|
|
|
get checks_path(by_domain: "bc")
|
|
assert_equal [c1, c2], current_checks
|
|
|
|
get checks_path(by_domain: "klm")
|
|
assert_empty current_checks
|
|
end
|
|
|
|
test "checks in error are filtered" do
|
|
c1 = create(:check, :last_runs_failed, created_at: 1.week.ago, user: @user)
|
|
create(:check, user: @user)
|
|
|
|
get checks_path(recurrent_failures: true)
|
|
assert_equal [c1], current_checks
|
|
end
|
|
|
|
test "checks are paginated" do
|
|
create_list(:check, 40, user: @user)
|
|
|
|
get checks_path
|
|
assert_equal 1, current_checks.current_page
|
|
first_page = current_checks
|
|
|
|
get checks_path(page: 2)
|
|
assert_equal 2, current_checks.current_page
|
|
assert_not_equal first_page, current_checks
|
|
end
|
|
|
|
test "checks are scoped to current user" do
|
|
c1 = create(:check, user: @user)
|
|
create(:check)
|
|
|
|
get checks_path
|
|
assert_equal [c1], current_checks
|
|
end
|
|
|
|
def current_checks
|
|
@controller.instance_variable_get("@checks")
|
|
end
|
|
end
|