diff --git a/lib/gi/lcpe/client.rb b/lib/gi/lcpe/client.rb index 5d59e715c0b..39a3416a315 100644 --- a/lib/gi/lcpe/client.rb +++ b/lib/gi/lcpe/client.rb @@ -69,7 +69,7 @@ def v_cache def validate_client_version # client (and not vets-api cache) must have fresh version config.etag = v_client - validation_response = perform(:get, 'v1/lcpe/lacs', {}) + validation_response = perform(:get, "v1/lcpe/#{redis_key}", {}) case validation_response.status when 304 config.etag = nil diff --git a/spec/lib/gi/lcpe/client_spec.rb b/spec/lib/gi/lcpe/client_spec.rb index f86110ce0f2..1c182bb0245 100644 --- a/spec/lib/gi/lcpe/client_spec.rb +++ b/spec/lib/gi/lcpe/client_spec.rb @@ -8,6 +8,7 @@ let(:client) { described_class.new(v_client:, lcpe_type:) } let(:v_fresh) { '3' } let(:v_stale) { '2' } + let(:enriched_id) { "1@#{v_client}" } describe '#get_licenses_and_certs_v1' do context 'when versioning disabled' do @@ -39,49 +40,33 @@ describe '#get_license_and_cert_details_v1' do let(:response) { instance_double(GI::GIDSResponse) } + let(:lcpe_type) { 'lacs' } before do allow(GI::GIDSResponse).to receive(:new).and_return(response) allow(response).to receive(:body) end - context 'when versioning disabled' do - let(:v_client) { nil } - let(:lcpe_type) { nil } + context 'when client version stale' do + let(:v_client) { v_stale } - it 'creates GI::GIDSReponse to be passed to GIDSRedis' do - VCR.use_cassette('gi/lcpe/get_lac_details') do - client.get_license_and_cert_details_v1({ id: '1@f9822' }) - expect(GI::GIDSResponse).to have_received(:new) - expect(response).not_to have_received(:body) + it 'raises ClientCacheStaleError' do + VCR.use_cassette('gi/lcpe/get_lacs_cache_stale') do + expect { client.get_license_and_cert_details_v1({ id: enriched_id }) } + .to raise_error(LCPERedis::ClientCacheStaleError) end end end - context 'when versioning enabled' do - let(:lcpe_type) { 'lacs' } - - context 'when client version stale' do - let(:v_client) { v_stale } - - it 'raises ClientCacheStaleError' do - VCR.use_cassette('gi/lcpe/get_lacs_cache_stale') do - expect { client.get_license_and_cert_details_v1({ id: '1@f9822', version: v_client }) } - .to raise_error(LCPERedis::ClientCacheStaleError) - end - end - end - - context 'when client version fresh' do - let(:v_client) { v_fresh } + context 'when client version fresh' do + let(:v_client) { v_fresh } - it 'creates GI::GIDSReponse and calls body' do - VCR.use_cassette('gi/lcpe/get_lacs_cache_fresh') do - VCR.use_cassette('gi/lcpe/get_lac_details') do - client.get_license_and_cert_details_v1({ id: '1@f9822', version: v_client }) - expect(GI::GIDSResponse).to have_received(:new) - expect(response).to have_received(:body) - end + it 'creates GI::GIDSReponse and calls body' do + VCR.use_cassette('gi/lcpe/get_lacs_cache_fresh') do + VCR.use_cassette('gi/lcpe/get_lac_details') do + client.get_license_and_cert_details_v1({ id: enriched_id }) + expect(GI::GIDSResponse).to have_received(:new) + expect(response).to have_received(:body) end end end @@ -118,16 +103,35 @@ describe '#get_exam_details_v1' do let(:response) { instance_double(GI::GIDSResponse) } - let(:v_client) { nil } - let(:lcpe_type) { nil } - - it 'creates GI::GIDSReponse to be passed to GIDSRedis' do - VCR.use_cassette('gi/lcpe/get_exam_details') do - allow(GI::GIDSResponse).to receive(:new).and_return(response) - allow(response).to receive(:body) - client.get_exam_details_v1({ id: '1@acce9' }) - expect(GI::GIDSResponse).to have_received(:new) - expect(response).not_to have_received(:body) + let(:lcpe_type) { 'exams' } + + before do + allow(GI::GIDSResponse).to receive(:new).and_return(response) + allow(response).to receive(:body) + end + + context 'when client version stale' do + let(:v_client) { v_stale } + + it 'raises ClientCacheStaleError' do + VCR.use_cassette('gi/lcpe/get_exams_cache_stale') do + expect { client.get_exam_details_v1({ id: enriched_id }) } + .to raise_error(LCPERedis::ClientCacheStaleError) + end + end + end + + context 'when client version fresh' do + let(:v_client) { v_fresh } + + it 'creates GI::GIDSReponse and calls body' do + VCR.use_cassette('gi/lcpe/get_exams_cache_fresh') do + VCR.use_cassette('gi/lcpe/get_exam_details') do + client.get_exam_details_v1({ id: enriched_id }) + expect(GI::GIDSResponse).to have_received(:new) + expect(response).to have_received(:body) + end + end end end end diff --git a/spec/requests/v1/gi/lcpe/exams_spec.rb b/spec/requests/v1/gi/lcpe/exams_spec.rb index 9a4dcf12027..c98d0b71a1f 100644 --- a/spec/requests/v1/gi/lcpe/exams_spec.rb +++ b/spec/requests/v1/gi/lcpe/exams_spec.rb @@ -9,11 +9,12 @@ let(:v_fresh) { '3' } let(:v_stale) { '2' } + let(:enriched_id) { "1@#{v_client}" } describe 'GET v1/gi/lcpe/exams' do let(:lcpe_type) { 'exams' } let(:lcpe_cache) { LCPERedis.new(lcpe_type:) } - let(:service) { GI::LCPE::Client.new(version_id: v_client, lcpe_type:) } + let(:service) { GI::LCPE::Client.new(v_client:, lcpe_type:) } context 'when filter params present' do it 'bypasses versioning and returns lacs with 200 response' do @@ -42,7 +43,7 @@ let(:v_client) { v_stale } before do - # render cache stale + # generate stale cache VCR.use_cassette('gi/lcpe/get_exams_cache_nil') do service.get_exams_v1({}) body = lcpe_cache.cached_response.body.merge(version: v_stale) @@ -64,7 +65,7 @@ let(:v_client) { v_stale } before do - # render cache fresh + # generate fresh cache VCR.use_cassette('gi/lcpe/get_exams_cache_nil') do service.get_exams_v1({}) end @@ -84,7 +85,7 @@ let(:v_client) { v_fresh } before do - # render cache fresh + # generate fresh cache VCR.use_cassette('gi/lcpe/get_exams_cache_nil') do service.get_exams_v1({}) end @@ -102,11 +103,28 @@ end describe 'GET v1/gi/lcpe/exams/:id' do - it 'returns 200 response' do - VCR.use_cassette('gi/lcpe/get_exam_details') do - get "#{v1_gi_lcpe_exams_url}/1@acce9" - expect(response).to have_http_status(:ok) - expect(response).to match_response_schema('gi/lcpe/exam') + context 'when client requests details with stale cache' do + let(:v_client) { v_stale } + + it 'returns 409 conflict' do + VCR.use_cassette('gi/lcpe/get_exams_cache_stale') do + get "#{v1_gi_lcpe_exams_url}/#{enriched_id}" + expect(response).to have_http_status(:conflict) + end + end + end + + context 'when client requests details with fresh cache' do + let(:v_client) { v_fresh } + + it 'returns 200 response with lac details' do + VCR.use_cassette('gi/lcpe/get_exams_cache_fresh') do + VCR.use_cassette('gi/lcpe/get_exam_details') do + get "#{v1_gi_lcpe_exams_url}/#{enriched_id}" + expect(response).to have_http_status(:ok) + expect(response).to match_response_schema('gi/lcpe/exam') + end + end end end end diff --git a/spec/requests/v1/gi/lcpe/lacs_spec.rb b/spec/requests/v1/gi/lcpe/lacs_spec.rb index b3e1fb73f12..2e4ef698a94 100644 --- a/spec/requests/v1/gi/lcpe/lacs_spec.rb +++ b/spec/requests/v1/gi/lcpe/lacs_spec.rb @@ -9,11 +9,12 @@ let(:v_fresh) { '3' } let(:v_stale) { '2' } + let(:enriched_id) { "1@#{v_client}" } describe 'GET v1/gi/lcpe/lacs' do let(:lcpe_type) { 'lacs' } let(:lcpe_cache) { LCPERedis.new(lcpe_type:) } - let(:service) { GI::LCPE::Client.new(version_id: v_client, lcpe_type:) } + let(:service) { GI::LCPE::Client.new(v_client:, lcpe_type:) } context 'when filter params present' do it 'bypasses versioning and returns lacs with 200 response' do @@ -42,7 +43,7 @@ let(:v_client) { v_stale } before do - # render cache stale + # generate stale cache VCR.use_cassette('gi/lcpe/get_lacs_cache_nil') do service.get_licenses_and_certs_v1({}) body = lcpe_cache.cached_response.body.merge(version: v_stale) @@ -64,7 +65,7 @@ let(:v_client) { v_stale } before do - # render cache fresh + # generate fresh cache VCR.use_cassette('gi/lcpe/get_lacs_cache_nil') do service.get_licenses_and_certs_v1({}) end @@ -84,7 +85,7 @@ let(:v_client) { v_fresh } before do - # render cache fresh + # generate fresh cache VCR.use_cassette('gi/lcpe/get_lacs_cache_nil') do service.get_licenses_and_certs_v1({}) end @@ -107,7 +108,7 @@ it 'returns 409 conflict' do VCR.use_cassette('gi/lcpe/get_lacs_cache_stale') do - get "#{v1_gi_lcpe_lacs_url}/1@f9822", params: { version: v_client } + get "#{v1_gi_lcpe_lacs_url}/#{enriched_id}" expect(response).to have_http_status(:conflict) end end @@ -119,7 +120,7 @@ it 'returns 200 response with lac details' do VCR.use_cassette('gi/lcpe/get_lacs_cache_fresh') do VCR.use_cassette('gi/lcpe/get_lac_details') do - get "#{v1_gi_lcpe_lacs_url}/1@f9822", params: { version: v_client } + get "#{v1_gi_lcpe_lacs_url}/#{enriched_id}" expect(response).to have_http_status(:ok) expect(response).to match_response_schema('gi/lcpe/lac') end diff --git a/spec/support/vcr_cassettes/gi/lcpe/get_exam_details.yml b/spec/support/vcr_cassettes/gi/lcpe/get_exam_details.yml index e8796330add..f4af2602ee3 100644 --- a/spec/support/vcr_cassettes/gi/lcpe/get_exam_details.yml +++ b/spec/support/vcr_cassettes/gi/lcpe/get_exam_details.yml @@ -2,7 +2,7 @@ http_interactions: - request: method: get - uri: "/v1/lcpe/exams/1@acce9" + uri: "/v1/lcpe/exams/1@3" body: encoding: US-ASCII string: '' diff --git a/spec/support/vcr_cassettes/gi/lcpe/get_lac_details.yml b/spec/support/vcr_cassettes/gi/lcpe/get_lac_details.yml index a6a5258b76e..717c3c83d10 100644 --- a/spec/support/vcr_cassettes/gi/lcpe/get_lac_details.yml +++ b/spec/support/vcr_cassettes/gi/lcpe/get_lac_details.yml @@ -2,7 +2,7 @@ http_interactions: - request: method: get - uri: "/v1/lcpe/lacs/1@f9822" + uri: "/v1/lcpe/lacs/1@3" body: encoding: US-ASCII string: ''