From 8c6d65f69f7ba174561ec1e168602ab40dbb2a0d Mon Sep 17 00:00:00 2001 From: Jesus Bermudez Velazquez Date: Mon, 19 Aug 2024 13:44:19 +0100 Subject: [PATCH] Raise an exception for unknown CSPs --- engines/scc_proxy/lib/scc_proxy/engine.rb | 8 ++++- .../subscriptions/systems_controller_spec.rb | 32 +++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/engines/scc_proxy/lib/scc_proxy/engine.rb b/engines/scc_proxy/lib/scc_proxy/engine.rb index 486c1e120..7f2a0120f 100644 --- a/engines/scc_proxy/lib/scc_proxy/engine.rb +++ b/engines/scc_proxy/lib/scc_proxy/engine.rb @@ -68,7 +68,13 @@ def get_instance_id(params) nil, params['instance_data'] ) - instance_id_key = INSTANCE_ID_KEYS[params['hwinfo']['cloud_provider'].downcase.to_sym] + id_key = params['hwinfo']['cloud_provider'].downcase.to_sym + unless INSTANCE_ID_KEYS.key?(id_key) + error_message = 'Unknown cloud provider' + Rails.logger.error error_message + raise ActionController::TranslatedError.new(error_message) + end + instance_id_key = INSTANCE_ID_KEYS[id_key] iid = verification_provider.parse_instance_data iid[instance_id_key] end diff --git a/engines/scc_proxy/spec/requests/api/connect/v3/subscriptions/systems_controller_spec.rb b/engines/scc_proxy/spec/requests/api/connect/v3/subscriptions/systems_controller_spec.rb index 442bfd9cf..1972b0e71 100644 --- a/engines/scc_proxy/spec/requests/api/connect/v3/subscriptions/systems_controller_spec.rb +++ b/engines/scc_proxy/spec/requests/api/connect/v3/subscriptions/systems_controller_spec.rb @@ -27,7 +27,7 @@ hypervisor: 'Xen', arch: 'x86_64', uuid: 'ec235f7d-b435-e27d-86c6-c8fef3180a01', - cloud_provider: 'super_cloud' + cloud_provider: 'amazon' } } end @@ -110,7 +110,7 @@ hypervisor: 'Xen', arch: 'x86_64', uuid: 'ec235f7d-b435-e27d-86c6-c8fef3180a01', - cloud_provider: 'super_cloud' + cloud_provider: 'amazon' } } end @@ -151,6 +151,34 @@ end end + context 'unknown cloud provider' do + let(:params) do + { + hostname: 'test', + proxy_byos_mode: :payg, + instance_data: instance_data, + hwinfo: + { + hostname: 'test', + cpus: '1', + sockets: '1', + hypervisor: 'Xen', + arch: 'x86_64', + uuid: 'ec235f7d-b435-e27d-86c6-c8fef3180a01', + cloud_provider: 'super_cloud' + } + } + end + + it 'returns error' do + post '/connect/subscriptions/systems', params: params, headers: { HTTP_AUTHORIZATION: 'Token token=bar' } + data = JSON.parse(response.body) + expect(response.code).to eq('422') + expect(data['type']).to eq('error') + expect(data['error']).to include('Unknown cloud provider') + end + end + context 'unreachable server' do before do stub_request(:post, scc_register_system_url)