diff --git a/spec/factories/default.rb b/spec/factories/default.rb index 788789b72..74c91d0a2 100644 --- a/spec/factories/default.rb +++ b/spec/factories/default.rb @@ -44,6 +44,7 @@ "given_name": "Martin", "family_name": "Fenner" }} + globus_uuid { "bc7d0274-3472-4a79-b631-e4c7baccc667" } sequence(:symbol) { |n| provider.symbol + ".TEST#{n}" } name { "My data center" } role_name { "ROLE_DATACENTRE" } @@ -240,6 +241,7 @@ factory :provider do system_email { "josiah@example.org" } sequence(:symbol, 'A') { |n| "TEST#{n}" } + globus_uuid { "53d8d984-450d-4b1d-970b-67faff28db1c" } name { "My provider" } display_name { "My provider" } website { Faker::Internet.url } diff --git a/spec/requests/clients_spec.rb b/spec/requests/clients_spec.rb index 2916e9fd0..6ef90d57a 100644 --- a/spec/requests/clients_spec.rb +++ b/spec/requests/clients_spec.rb @@ -79,6 +79,7 @@ expect(last_response.status).to eq(200) expect(json.dig('data', 'attributes', 'name')).to eq(client.name) + expect(json.dig('data', 'attributes', 'globusUuid')).to eq("bc7d0274-3472-4a79-b631-e4c7baccc667") end end @@ -181,6 +182,37 @@ end end + context 'removes the globus_uuid' do + let(:params) do + { "data" => { "type" => "clients", + "attributes" => { + "globusUuid" => nil }} } + end + + it 'updates the record' do + put "/clients/#{client.symbol}", params, headers + + expect(last_response.status).to eq(200) + expect(json.dig('data', 'attributes', 'name')).to eq("My data center") + expect(json.dig('data', 'attributes', 'globusUuid')).to be_nil + end + end + + context 'invalid globus_uuid' do + let(:params) do + { "data" => { "type" => "clients", + "attributes" => { + "globusUuid" => "abc" }} } + end + + it 'updates the record' do + put "/clients/#{client.symbol}", params, headers + + expect(last_response.status).to eq(422) + expect(json["errors"].first).to eq("source"=>"globus_uuid", "title"=>"Abc is not a valid UUID") + end + end + context 'using basic auth', vcr: true do let(:params) do { "data" => { "type" => "clients", diff --git a/spec/requests/providers_spec.rb b/spec/requests/providers_spec.rb index 359504455..beb551e1a 100644 --- a/spec/requests/providers_spec.rb +++ b/spec/requests/providers_spec.rb @@ -611,6 +611,37 @@ end end + context 'removes globus_uuid' do + let(:params) do + { "data" => { "type" => "providers", + "attributes" => { + "globusUuid" => nil } } } + end + + it 'updates the record' do + put "/providers/#{provider.symbol}", params, headers + + expect(last_response.status).to eq(200) + expect(json.dig('data', 'attributes', 'displayName')).to eq("My provider") + expect(json.dig('data', 'attributes', 'globusUuid')).to be_nil + end + end + + context 'invalid globus_uuid' do + let(:params) do + { "data" => { "type" => "providers", + "attributes" => { + "globusUuid" => "abc" } } } + end + + it 'updates the record' do + put "/providers/#{provider.symbol}", params, headers + + expect(last_response.status).to eq(422) + expect(json["errors"].first).to eq("source"=>"globus_uuid", "title"=>"Abc is not a valid UUID") + end + end + context 'ror_id in wrong format' do let(:params) do { "data" => { "type" => "providers", diff --git a/spec/requests/repositories_spec.rb b/spec/requests/repositories_spec.rb index 601b4cf33..e59e645cf 100644 --- a/spec/requests/repositories_spec.rb +++ b/spec/requests/repositories_spec.rb @@ -81,6 +81,7 @@ expect(last_response.status).to eq(200) expect(json.dig('data', 'attributes', 'name')).to eq(client.name) + expect(json.dig('data', 'attributes', 'globusUuid')).to eq("bc7d0274-3472-4a79-b631-e4c7baccc667") end end @@ -158,6 +159,37 @@ end end + context 'removes the globus_uuid' do + let(:params) do + { "data" => { "type" => "repositories", + "attributes" => { + "globusUuid" => nil }} } + end + + it 'updates the record' do + put "/repositories/#{client.symbol}", params, headers + + expect(last_response.status).to eq(200) + expect(json.dig('data', 'attributes', 'name')).to eq("My data center") + expect(json.dig('data', 'attributes', 'globusUuid')).to be_nil + end + end + + context 'invalid globus_uuid' do + let(:params) do + { "data" => { "type" => "repositories", + "attributes" => { + "globusUuid" => "abc" }} } + end + + it 'updates the record' do + put "/repositories/#{client.symbol}", params, headers + + expect(last_response.status).to eq(422) + expect(json["errors"].first).to eq("source"=>"globus_uuid", "title"=>"Abc is not a valid UUID") + end + end + context 'using basic auth', vcr: true do let(:params) do { "data" => { "type" => "repositories",