4533: Merge branch 'master' into 4533-remote-reset
[arvados.git] / services / api / test / functional / database_controller_test.rb
1 require 'test_helper'
2
3 class DatabaseControllerTest < ActionController::TestCase
4   include CurrentApiClient
5
6   teardown do
7     restore_configuration
8     # We made configuration changes here that affect routing.
9     Rails.application.reload_routes!
10   end
11
12   test "reset fails with non-admin token" do
13     authorize_with :active
14     post :reset
15     assert_response 403
16   end
17
18   test "reset fails when not in test mode" do
19     authorize_with :admin
20     env_was = ENV['RAILS_ENV']
21     ENV['RAILS_ENV'] = 'development'
22     post :reset
23     assert_response 403
24     ENV['RAILS_ENV'] = env_was
25   end
26
27   test "reset fails when not configured" do
28     Rails.configuration.enable_remote_database_reset = false
29     Rails.application.reload_routes!
30     authorize_with :admin
31     assert_raise ActionController::RoutingError do
32       post :reset
33     end
34   end
35
36   test "reset succeeds with admin token" do
37     new_uuid = nil
38     act_as_system_user do
39       new_uuid = Specimen.create.uuid
40     end
41     assert_not_empty Specimen.where(uuid: new_uuid)
42     authorize_with :admin
43     post :reset
44     assert_response 200
45     assert_empty Specimen.where(uuid: new_uuid)
46   end
47 end