mirror of
https://github.com/fluent/fluentd-ui.git
synced 2026-05-05 02:46:11 +02:00
Add integration test
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com>
This commit is contained in:
parent
14857e8f8d
commit
7a6d813cc8
126
test/integration/setting_test.rb
Normal file
126
test/integration/setting_test.rb
Normal file
@ -0,0 +1,126 @@
|
||||
require "test_helper"
|
||||
|
||||
class Setting < ActionDispatch::IntegrationTest
|
||||
include ::ConfigHistories::DaemonHaveSomeConfigHistories
|
||||
include ::ConfigHistories::DaemonHadBeenStartedOnce
|
||||
|
||||
setup do
|
||||
login_with(FactoryBot.build(:user))
|
||||
stub_daemon
|
||||
daemon.agent.config_write("GREAT CONFIG HERE")
|
||||
|
||||
visit("/daemon/setting")
|
||||
end
|
||||
|
||||
test "show setting" do
|
||||
assert do
|
||||
page.has_css?('h1', text: I18n.t('fluentd.settings.show.page_title'))
|
||||
end
|
||||
assert do
|
||||
page.has_link?(I18n.t('terms.edit'))
|
||||
end
|
||||
assert do
|
||||
page.has_css?('pre', text: 'GREAT CONFIG HERE')
|
||||
end
|
||||
assert_equal(Settings.histories_count_in_preview + 1, all('.row tr').count) # links to hisotries#show + 1 table header
|
||||
assert do
|
||||
page.has_link?(I18n.t('fluentd.settings.show.link_to_histories'))
|
||||
end
|
||||
assert do
|
||||
page.has_text?(I18n.t('fluentd.settings.running_backup.title'))
|
||||
end
|
||||
end
|
||||
|
||||
test "go to histories#index" do
|
||||
click_link(I18n.t('fluentd.settings.show.link_to_histories'))
|
||||
|
||||
assert do
|
||||
page.has_css?('h1', text: I18n.t('fluentd.settings.histories.index.page_title'))
|
||||
end
|
||||
end
|
||||
|
||||
test "go to histories#show" do
|
||||
all('.row tr td a').first.click
|
||||
|
||||
assert do
|
||||
page.has_css?('h1', text: I18n.t('fluentd.settings.histories.show.page_title'))
|
||||
end
|
||||
end
|
||||
|
||||
test "edit setting" do
|
||||
click_link(I18n.t('terms.edit'))
|
||||
|
||||
assert do
|
||||
page.has_css?('h1', text: I18n.t('fluentd.settings.edit.page_title'))
|
||||
end
|
||||
assert do
|
||||
page.has_css?('p.text-danger', text: I18n.t('terms.notice_restart_for_config_edit', brand: 'fluentd'))
|
||||
end
|
||||
|
||||
fill_in('config', with: 'YET ANOTHER CONFIG')
|
||||
|
||||
click_button(I18n.t('terms.update'))
|
||||
|
||||
assert_equal('/daemon/setting', current_path)
|
||||
assert do
|
||||
page.has_css?('pre', text: 'YET ANOTHER CONFIG')
|
||||
end
|
||||
end
|
||||
|
||||
sub_test_case "plain config" do
|
||||
setup do
|
||||
any_instance_of(Fluentd::Agent::TdAgent) do |object|
|
||||
@conf = <<-'CONFIG'
|
||||
<source>
|
||||
@type forward
|
||||
</source>
|
||||
CONFIG
|
||||
stub(object).dryrun(anything) { true }
|
||||
daemon.agent.config_write(@conf)
|
||||
click_link(I18n.t('terms.edit'))
|
||||
end
|
||||
end
|
||||
|
||||
test "configtest" do
|
||||
click_button(I18n.t('terms.configtest'))
|
||||
assert do
|
||||
page.has_css?('.alert-success')
|
||||
end
|
||||
end
|
||||
|
||||
test "update & restart check" do
|
||||
click_button(I18n.t('terms.update'))
|
||||
# CodeMirror exchange \n -> \r\n
|
||||
assert_equal(@conf, daemon.agent.config.gsub("\r\n", "\n"))
|
||||
end
|
||||
end
|
||||
|
||||
sub_test_case "embedded config" do
|
||||
setup do
|
||||
any_instance_of(Fluentd::Agent::TdAgent) do |object|
|
||||
@conf = <<-'CONFIG'
|
||||
<source>
|
||||
type forward
|
||||
id "foo#{Time.now.to_s}"
|
||||
</source>
|
||||
CONFIG
|
||||
stub(object).dryrun(anything) { true }
|
||||
daemon.agent.config_write(@conf)
|
||||
click_link(I18n.t('terms.edit'))
|
||||
end
|
||||
end
|
||||
|
||||
test "configtest" do
|
||||
click_button(I18n.t('terms.configtest'))
|
||||
assert do
|
||||
page.has_css?('.alert-success')
|
||||
end
|
||||
end
|
||||
|
||||
test "update & restart check" do
|
||||
click_button(I18n.t('terms.update'))
|
||||
# CodeMirror exchange \n -> \r\n
|
||||
assert_equal(@conf, daemon.agent.config.gsub("\r\n", "\n"))
|
||||
end
|
||||
end
|
||||
end
|
||||
43
test/integration/users_test.rb
Normal file
43
test/integration/users_test.rb
Normal file
@ -0,0 +1,43 @@
|
||||
require "test_helper"
|
||||
|
||||
class UsersTest < ActionDispatch::IntegrationTest
|
||||
test "login required" do
|
||||
login_required(user_path)
|
||||
end
|
||||
|
||||
sub_test_case "edit" do
|
||||
setup do
|
||||
@user = FactoryBot.build(:user)
|
||||
login_with(@user)
|
||||
end
|
||||
|
||||
teardown do
|
||||
# reset password to the default
|
||||
FileUtils.rm_f(User::ENCRYPTED_PASSWORD_FILE)
|
||||
end
|
||||
|
||||
sub_test_case "to change password" do
|
||||
def update_password(current_password, password, password_confirmation)
|
||||
visit user_path
|
||||
fill_in 'user[current_password]', with: current_password
|
||||
|
||||
fill_in 'user[password]', with: password
|
||||
fill_in 'user[password_confirmation]', with: password_confirmation
|
||||
click_button I18n.t("terms.update_password")
|
||||
end
|
||||
|
||||
test "when input valid new password/confirmation" do
|
||||
update_password(@user.password, "newpassword", "newpassword")
|
||||
page.has_css?(".alert-success")
|
||||
assert_equal(@user.digest("newpassword"), @user.stored_digest)
|
||||
end
|
||||
|
||||
test "when input invalid new password/confirmation" do
|
||||
original_digest = @user.stored_digest
|
||||
update_password(@user.password, "newpassword", "invalidpassword")
|
||||
page.has_css?(".alert-danger")
|
||||
assert_equal(original_digest, @user.stored_digest)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
68
test/support/config_histories.rb
Normal file
68
test/support/config_histories.rb
Normal file
@ -0,0 +1,68 @@
|
||||
require_relative "./stub_daemon"
|
||||
|
||||
module ConfigHistories
|
||||
module DaemonHaveSomeConfigHistories
|
||||
extend ActiveSupport::Concern
|
||||
include ::StubDaemon
|
||||
|
||||
included do
|
||||
def daemon
|
||||
@daemon ||= stub_daemon
|
||||
end
|
||||
|
||||
setup do
|
||||
config_contents = <<-CONFIG.strip_heredoc
|
||||
<source>
|
||||
@type forward
|
||||
port 24224
|
||||
</source>
|
||||
CONFIG
|
||||
new_config = <<-CONFIG
|
||||
<source>
|
||||
@type http
|
||||
port 8899
|
||||
</source>
|
||||
CONFIG
|
||||
|
||||
three_hours_ago = Time.zone.now - 3.hours
|
||||
Timecop.freeze(three_hours_ago)
|
||||
FileUtils.rm_rf(daemon.agent.config_backup_dir)
|
||||
|
||||
7.times do |i|
|
||||
backup_time = three_hours_ago - (i+1).hours
|
||||
FileUtils.touch(File.join(daemon.agent.config_backup_dir, "#{backup_time.strftime("%Y%m%d_%H%M%S")}.conf"))
|
||||
end
|
||||
|
||||
Timecop.freeze(three_hours_ago + 1.hours)
|
||||
daemon.agent.config_write(config_contents)
|
||||
|
||||
Timecop.freeze(three_hours_ago + 2.hours)
|
||||
daemon.agent.config_write(new_config)
|
||||
|
||||
Timecop.freeze(three_hours_ago + 3.hours)
|
||||
end
|
||||
|
||||
teardown do
|
||||
FileUtils.rm_rf(daemon.agent.config_backup_dir)
|
||||
Timecop.return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
module DaemonHadBeenStartedOnce
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
setup do
|
||||
@backup_content = "Running backup file content"
|
||||
File.open(daemon.agent.running_config_backup_file, "w") do |file|
|
||||
file.write(@backup_content)
|
||||
end
|
||||
end
|
||||
|
||||
teardown do
|
||||
FileUtils.rm_rf(daemon.agent.config_backup_dir)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
8
test/support/login_required.rb
Normal file
8
test/support/login_required.rb
Normal file
@ -0,0 +1,8 @@
|
||||
module LoginRequired
|
||||
def login_required(url)
|
||||
visit(url)
|
||||
assert_equal(new_sessions_path, current_path)
|
||||
end
|
||||
end
|
||||
|
||||
ActionDispatch::IntegrationTest.include(LoginRequired)
|
||||
Loading…
x
Reference in New Issue
Block a user