X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9d281577e42c6f8411cc3ee9954134b771499624..f59d6d76acf9c6f5bb95c5902b2c9a1cca427e93:/services/api/test/integration/database_reset_test.rb diff --git a/services/api/test/integration/database_reset_test.rb b/services/api/test/integration/database_reset_test.rb index 8c77c2d7c9..58f2abf697 100644 --- a/services/api/test/integration/database_reset_test.rb +++ b/services/api/test/integration/database_reset_test.rb @@ -1,11 +1,7 @@ require 'test_helper' class DatabaseResetTest < ActionDispatch::IntegrationTest - teardown do - restore_configuration - # We made configuration changes here that affect routing. - Rails.application.reload_routes! - end + self.use_transactional_fixtures = false test "reset fails when Rails.env != 'test'" do rails_env_was = Rails.env @@ -16,6 +12,7 @@ class DatabaseResetTest < ActionDispatch::IntegrationTest assert_response 404 ensure Rails.env = rails_env_was + Rails.application.reload_routes! end end @@ -23,4 +20,56 @@ class DatabaseResetTest < ActionDispatch::IntegrationTest post '/database/reset', {}, auth(:active) assert_response 403 end + + test "database reset doesn't break basic CRUD operations" do + active_auth = auth(:active) + admin_auth = auth(:admin) + + authorize_with :admin + post '/database/reset', {}, admin_auth + assert_response :success + + post '/arvados/v1/specimens', {specimen: '{}'}, active_auth + assert_response :success + new_uuid = json_response['uuid'] + + get '/arvados/v1/specimens/'+new_uuid, {}, active_auth + assert_response :success + + put('/arvados/v1/specimens/'+new_uuid, + {specimen: '{"properties":{}}'}, active_auth) + assert_response :success + + delete '/arvados/v1/specimens/'+new_uuid, {}, active_auth + assert_response :success + + get '/arvados/v1/specimens/'+new_uuid, {}, active_auth + assert_response 404 + end + + test "roll back database change" do + active_auth = auth(:active) + admin_auth = auth(:admin) + + old_uuid = specimens(:owned_by_active_user).uuid + authorize_with :admin + post '/database/reset', {}, admin_auth + assert_response :success + + delete '/arvados/v1/specimens/' + old_uuid, {}, active_auth + assert_response :success + post '/arvados/v1/specimens', {specimen: '{}'}, active_auth + assert_response :success + new_uuid = json_response['uuid'] + + # Reset to fixtures. + post '/database/reset', {}, admin_auth + assert_response :success + + # New specimen should disappear. Old specimen should reappear. + get '/arvados/v1/specimens/'+new_uuid, {}, active_auth + assert_response 404 + get '/arvados/v1/specimens/'+old_uuid, {}, active_auth + assert_response :success + end end