3 class DatabaseResetTest < ActionDispatch::IntegrationTest
4 slow_test "reset fails when Rails.env != 'test'" do
5 rails_env_was = Rails.env
7 Rails.env = 'production'
8 Rails.application.reload_routes!
9 post '/database/reset', {}, auth(:admin)
12 Rails.env = rails_env_was
13 Rails.application.reload_routes!
17 test "reset fails with non-admin token" do
18 post '/database/reset', {}, auth(:active)
22 slow_test "database reset doesn't break basic CRUD operations" do
23 active_auth = auth(:active)
24 admin_auth = auth(:admin)
27 post '/database/reset', {}, admin_auth
28 assert_response :success
30 post '/arvados/v1/specimens', {specimen: '{}'}, active_auth
31 assert_response :success
32 new_uuid = json_response['uuid']
34 get '/arvados/v1/specimens/'+new_uuid, {}, active_auth
35 assert_response :success
37 put('/arvados/v1/specimens/'+new_uuid,
38 {specimen: '{"properties":{}}'}, active_auth)
39 assert_response :success
41 delete '/arvados/v1/specimens/'+new_uuid, {}, active_auth
42 assert_response :success
44 get '/arvados/v1/specimens/'+new_uuid, {}, active_auth
48 slow_test "roll back database change" do
49 active_auth = auth(:active)
50 admin_auth = auth(:admin)
52 old_uuid = specimens(:owned_by_active_user).uuid
54 post '/database/reset', {}, admin_auth
55 assert_response :success
57 delete '/arvados/v1/specimens/' + old_uuid, {}, active_auth
58 assert_response :success
59 post '/arvados/v1/specimens', {specimen: '{}'}, active_auth
60 assert_response :success
61 new_uuid = json_response['uuid']
64 post '/database/reset', {}, admin_auth
65 assert_response :success
67 # New specimen should disappear. Old specimen should reappear.
68 get '/arvados/v1/specimens/'+new_uuid, {}, active_auth
70 get '/arvados/v1/specimens/'+old_uuid, {}, active_auth
71 assert_response :success