4533: Add integration test.
authorTom Clegg <tom@curoverse.com>
Mon, 24 Nov 2014 17:20:53 +0000 (12:20 -0500)
committerTom Clegg <tom@curoverse.com>
Mon, 24 Nov 2014 17:21:50 +0000 (12:21 -0500)
services/api/test/integration/remote_reset_test.rb [new file with mode: 0644]

diff --git a/services/api/test/integration/remote_reset_test.rb b/services/api/test/integration/remote_reset_test.rb
new file mode 100644 (file)
index 0000000..81f341a
--- /dev/null
@@ -0,0 +1,38 @@
+require 'test_helper'
+
+class RemoteResetTest < ActionDispatch::IntegrationTest
+  self.use_transactional_fixtures = false
+
+  test "roll back database change" do
+    active_auth = auth(:active)
+    admin_auth = auth(:admin)
+
+    old_uuid = specimens(:owned_by_active_user).uuid
+    new_uuid = nil
+    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']
+    get '/arvados/v1/specimens/'+new_uuid, {}, active_auth
+    assert_response :success
+    get '/arvados/v1/specimens/'+old_uuid, {}, active_auth
+    assert_response 404
+
+    # Reset to fixtures.
+    post '/database/reset', {}, admin_auth
+    assert_response :success
+
+    # New speciment 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
+    assert_empty Specimen.where(uuid: new_uuid)
+  end
+end