19698: Fix savepoint usage.
[arvados.git] / services / api / test / functional / arvados / v1 / keep_services_controller_test.rb
index 706f73ffda6157812e9cb687c9340f344464c663..0fbc7625ceb0d985d4c26d10e9cc2b636574378e 100644 (file)
@@ -1,10 +1,14 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 require 'test_helper'
 
 class Arvados::V1::KeepServicesControllerTest < ActionController::TestCase
 
   test "search by service_port with < query" do
     authorize_with :active
-    get :index, {
+    get :index, params: {
       filters: [['service_port', '<', 25107]]
     }
     assert_response :success
@@ -13,7 +17,7 @@ class Arvados::V1::KeepServicesControllerTest < ActionController::TestCase
 
   test "search by service_port with >= query" do
     authorize_with :active
-    get :index, {
+    get :index, params: {
       filters: [['service_port', '>=', 25107]]
     }
     assert_response :success
@@ -32,4 +36,32 @@ class Arvados::V1::KeepServicesControllerTest < ActionController::TestCase
     end
   end
 
+  test "report configured servers if db is empty" do
+    KeepService.unscoped.all.delete_all
+    expect_rvz = {}
+    n = 0
+    Rails.configuration.Services.Keepstore.InternalURLs.each do |k,v|
+      n += 1
+      rvz = "%015x" % n
+      expect_rvz[k.to_s] = rvz
+      Rails.configuration.Services.Keepstore.InternalURLs[k].Rendezvous = rvz
+    end
+    expect_rvz[Rails.configuration.Services.Keepproxy.ExternalURL] = true
+    refute_empty expect_rvz
+    authorize_with :active
+    get :index,
+      params: {:format => :json}
+    assert_response :success
+    json_response['items'].each do |svc|
+      url = "#{svc['service_ssl_flag'] ? 'https' : 'http'}://#{svc['service_host']}:#{svc['service_port']}/"
+      assert_equal true, expect_rvz.has_key?(url), "#{url} does not match any configured service: expecting #{expect_rvz}"
+      rvz = expect_rvz[url]
+      if rvz.is_a? String
+        assert_equal "zzzzz-bi6l4-#{rvz}", svc['uuid'], "exported service UUID should match InternalURLs.*.Rendezvous value"
+      end
+      expect_rvz.delete(url)
+    end
+    assert_equal({}, expect_rvz, "all configured Keepstore and Keepproxy services should be returned")
+  end
+
 end