X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9d281577e42c6f8411cc3ee9954134b771499624..aceb1f665394d84ec238d6654b5447a37c2bc3b3:/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..7015453a9a 100644 --- a/services/api/test/integration/database_reset_test.rb +++ b/services/api/test/integration/database_reset_test.rb @@ -1,26 +1,78 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' class DatabaseResetTest < ActionDispatch::IntegrationTest - teardown do - restore_configuration - # We made configuration changes here that affect routing. - Rails.application.reload_routes! - end - - test "reset fails when Rails.env != 'test'" do + slow_test "reset fails when Rails.env != 'test'" do rails_env_was = Rails.env begin Rails.env = 'production' Rails.application.reload_routes! - post '/database/reset', {}, auth(:admin) + post '/database/reset', params: {}, headers: auth(:admin) assert_response 404 ensure Rails.env = rails_env_was + Rails.application.reload_routes! end end test "reset fails with non-admin token" do - post '/database/reset', {}, auth(:active) + post '/database/reset', params: {}, headers: auth(:active) assert_response 403 end + + slow_test "database reset doesn't break basic CRUD operations" do + active_auth = auth(:active) + admin_auth = auth(:admin) + + authorize_with :admin + post '/database/reset', params: {}, headers: admin_auth + assert_response :success + + post '/arvados/v1/specimens', params: {specimen: '{}'}, headers: active_auth + assert_response :success + new_uuid = json_response['uuid'] + + get '/arvados/v1/specimens/'+new_uuid, params: {}, headers: active_auth + assert_response :success + + put('/arvados/v1/specimens/'+new_uuid, + params: {specimen: '{"properties":{}}'}, + headers: active_auth) + assert_response :success + + delete '/arvados/v1/specimens/'+new_uuid, params: {}, headers: active_auth + assert_response :success + + get '/arvados/v1/specimens/'+new_uuid, params: {}, headers: active_auth + assert_response 404 + end + + slow_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', params: {}, headers: admin_auth + assert_response :success + + delete '/arvados/v1/specimens/' + old_uuid, params: {}, headers: active_auth + assert_response :success + post '/arvados/v1/specimens', params: {specimen: '{}'}, headers: active_auth + assert_response :success + new_uuid = json_response['uuid'] + + # Reset to fixtures. + post '/database/reset', params: {}, headers: admin_auth + assert_response :success + + # New specimen should disappear. Old specimen should reappear. + get '/arvados/v1/specimens/'+new_uuid, params: {}, headers: active_auth + assert_response 404 + get '/arvados/v1/specimens/'+old_uuid, params: {}, headers: active_auth + assert_response :success + end end