qa 5.2.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/services/qa/linked_data/graph_service.rb +1 -0
- data/app/services/qa/linked_data/request_header_service.rb +15 -1
- data/lib/generators/qa/install/templates/config/initializers/qa.rb +5 -0
- data/lib/qa/authorities/linked_data/find_term.rb +4 -2
- data/lib/qa/authorities/linked_data/search_query.rb +4 -2
- data/lib/qa/configuration.rb +9 -0
- data/lib/qa/version.rb +1 -1
- data/spec/controllers/linked_data_terms_controller_spec.rb +15 -0
- data/spec/services/linked_data/request_header_service_spec.rb +49 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0d1a1143d74f69697643e818b748496f81e96cd
|
4
|
+
data.tar.gz: e1145e427c1f343a44b4d144181697efb89a70e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8abeeb72e16fca93102783671e7b8da5362461422e9b3d6d53ed35a0ee7dc7e169980b5ea1eeb53bf1a00edf7fd4d85f41f6336af0b61acc50b56bf7161d5978
|
7
|
+
data.tar.gz: ab5983ff28640f912a06ac673b376d1542d4cdd0a182b1cfedf72ea6b186c4ada32ad17c4d9c7190e7e30c18bb81e8377e0603ff984b268ffa9168c59d10aead
|
@@ -91,6 +91,7 @@ module Qa
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def process_error(e, url)
|
94
|
+
Rails.logger.warn("******** RDF::Graph#load failure: exception=#{e.inspect}, url=#{url}")
|
94
95
|
uri = URI(url)
|
95
96
|
raise RDF::FormatError, "Unknown RDF format of results returned by #{uri}. (RDF::FormatError) You may need to include gem 'linkeddata'." if e.is_a? RDF::FormatError
|
96
97
|
response_code = ioerror_code(e)
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# Service to construct a request header that includes optional attributes for search and fetch requests.
|
2
|
+
require 'geocoder'
|
2
3
|
module Qa
|
3
4
|
module LinkedData
|
4
5
|
class RequestHeaderService
|
5
|
-
attr_reader :request, :params
|
6
|
+
attr_reader :request, :params, :request_id
|
6
7
|
|
7
8
|
# @param request [HttpRequest] request from controller
|
8
9
|
# @param params [Hash] attribute-value pairs holding the request parameters
|
@@ -16,6 +17,8 @@ module Qa
|
|
16
17
|
def initialize(request:, params:)
|
17
18
|
@request = request
|
18
19
|
@params = params
|
20
|
+
@request_id = request.request_id
|
21
|
+
log_request
|
19
22
|
end
|
20
23
|
|
21
24
|
# Construct request parameters to pass to search_query (linked data module).
|
@@ -23,6 +26,8 @@ module Qa
|
|
23
26
|
# @see Qa::Authorities::LinkedData::SearchQuery
|
24
27
|
def search_header
|
25
28
|
header = {}
|
29
|
+
header[:request] = request
|
30
|
+
header[:request_id] = request_id
|
26
31
|
header[:subauthority] = params.fetch(:subauthority, nil)
|
27
32
|
header[:user_language] = user_language
|
28
33
|
header[:performance_data] = performance_data?
|
@@ -37,6 +42,8 @@ module Qa
|
|
37
42
|
# @see Qa::Authorities::LinkedData::FindTerm
|
38
43
|
def fetch_header
|
39
44
|
header = {}
|
45
|
+
header[:request] = request
|
46
|
+
header[:request_id] = request_id
|
40
47
|
header[:subauthority] = params.fetch(:subauthority, nil)
|
41
48
|
header[:user_language] = user_language
|
42
49
|
header[:performance_data] = performance_data?
|
@@ -62,6 +69,13 @@ module Qa
|
|
62
69
|
|
63
70
|
private
|
64
71
|
|
72
|
+
def log_request
|
73
|
+
gc = request.location
|
74
|
+
msg = "******** #{request.path_parameters[:action].upcase}"
|
75
|
+
msg += " from IP #{request.ip} in {city: #{gc.city}, state: #{gc.state}, country: #{gc.country}}" unless Qa.config.suppress_ip_data_from_log
|
76
|
+
Rails.logger.info(msg)
|
77
|
+
end
|
78
|
+
|
65
79
|
# filter literals in results to this language
|
66
80
|
def user_language
|
67
81
|
request_language = request.env['HTTP_ACCEPT_LANGUAGE']
|
@@ -23,4 +23,9 @@ Qa.config do |config|
|
|
23
23
|
# When false, properties that do not override default optional behavior will be shown whether or not the property has a value in the graph.
|
24
24
|
# When true, properties that do not override default optional behavior will not be shown whn the property does not have a value in the graph.
|
25
25
|
# config.property_map_default_for_optional = false
|
26
|
+
|
27
|
+
# IP data including IP address, city, state, and country will be logged with each request.
|
28
|
+
# When false, IP data is logged
|
29
|
+
# When true, IP data will not be logged (default for backward compatibility)
|
30
|
+
# config.suppress_ip_data_from_log = true
|
26
31
|
end
|
@@ -15,8 +15,8 @@ module Qa::Authorities
|
|
15
15
|
@term_config = term_config
|
16
16
|
end
|
17
17
|
|
18
|
-
attr_reader :term_config, :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s, :subauthority, :request_header
|
19
|
-
private :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s, :subauthority, :request_header
|
18
|
+
attr_reader :term_config, :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s, :subauthority, :request_header, :request_id, :request
|
19
|
+
private :full_graph, :filtered_graph, :language, :id, :uri, :access_time_s, :normalize_time_s, :subauthority, :request_header, :request_id, :request
|
20
20
|
|
21
21
|
delegate :term_subauthority?, :prefixes, :authority_name, to: :term_config
|
22
22
|
|
@@ -92,6 +92,8 @@ module Qa::Authorities
|
|
92
92
|
|
93
93
|
def unpack_request_header(request_header)
|
94
94
|
@request_header = request_header
|
95
|
+
@request = request_header.fetch(:request, nil)
|
96
|
+
@request_id = request_header.fetch(:request_id, 'UNASSIGNED')
|
95
97
|
@subauthority = request_header.fetch(:subauthority, nil)
|
96
98
|
@format = request_header.fetch(:format, 'json')
|
97
99
|
@performance_data = request_header.fetch(:performance_data, false)
|
@@ -15,8 +15,8 @@ module Qa::Authorities
|
|
15
15
|
@search_config = search_config
|
16
16
|
end
|
17
17
|
|
18
|
-
attr_reader :search_config, :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s, :subauthority, :request_header
|
19
|
-
private :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s, :subauthority, :request_header
|
18
|
+
attr_reader :search_config, :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s, :subauthority, :request_header, :request_id, :request
|
19
|
+
private :full_graph, :filtered_graph, :language, :access_time_s, :normalize_time_s, :subauthority, :request_header, :request_id, :request
|
20
20
|
|
21
21
|
delegate :subauthority?, :supports_sort?, :prefixes, :authority_name, to: :search_config
|
22
22
|
|
@@ -91,6 +91,8 @@ module Qa::Authorities
|
|
91
91
|
|
92
92
|
def unpack_request_header(request_header)
|
93
93
|
@request_header = request_header
|
94
|
+
@request = request_header.fetch(:request, nil)
|
95
|
+
@request_id = request_header.fetch(:request_id, 'UNASSIGNED')
|
94
96
|
@subauthority = request_header.fetch(:subauthority, nil)
|
95
97
|
@context = request_header.fetch(:context, false)
|
96
98
|
@performance_data = request_header.fetch(:performance_data, false)
|
data/lib/qa/configuration.rb
CHANGED
@@ -54,5 +54,14 @@ module Qa
|
|
54
54
|
@property_map_default_for_optional = false if @property_map_default_for_optional.nil?
|
55
55
|
@property_map_default_for_optional
|
56
56
|
end
|
57
|
+
|
58
|
+
# IP data including IP address, city, state, and country will be logged with each request.
|
59
|
+
# When false, IP data is logged
|
60
|
+
# When true, IP data will not be logged (default for backward compatibility)
|
61
|
+
attr_writer :suppress_ip_data_from_log
|
62
|
+
def suppress_ip_data_from_log
|
63
|
+
@suppress_ip_data_from_log = true if @suppress_ip_data_from_log.nil?
|
64
|
+
@suppress_ip_data_from_log
|
65
|
+
end
|
57
66
|
end
|
58
67
|
end
|
data/lib/qa/version.rb
CHANGED
@@ -2,6 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'json'
|
3
3
|
|
4
4
|
describe Qa::LinkedDataTermsController, type: :controller do
|
5
|
+
let(:graph_load_failure) { /^\*\*\*\*\*\*\*\* RDF\:\:Graph\#load failure/ }
|
5
6
|
before do
|
6
7
|
@routes = Qa::Engine.routes
|
7
8
|
end
|
@@ -140,6 +141,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
140
141
|
.to_return(status: 500)
|
141
142
|
end
|
142
143
|
it 'returns 500' do
|
144
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
143
145
|
expect(Rails.logger).to receive(:warn).with("Internal Server Error - Search query my_query unsuccessful for authority OCLC_FAST")
|
144
146
|
get :search, params: { q: 'my_query', vocab: 'OCLC_FAST', maximumRecords: '3' }
|
145
147
|
expect(response.code).to eq('500')
|
@@ -154,6 +156,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
154
156
|
end
|
155
157
|
it 'returns 500' do
|
156
158
|
msg = "RDF Format Error - Results from search query my_query for authority OCLC_FAST was not identified as a valid RDF format. You may need to include the linkeddata gem."
|
159
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
157
160
|
expect(Rails.logger).to receive(:warn).with(msg)
|
158
161
|
get :search, params: { q: 'my_query', vocab: 'OCLC_FAST', maximumRecords: '3' }
|
159
162
|
expect(response.code).to eq('500')
|
@@ -166,6 +169,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
166
169
|
.to_return(status: 501)
|
167
170
|
end
|
168
171
|
it 'returns 500' do
|
172
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
169
173
|
expect(Rails.logger).to receive(:warn).with("Internal Server Error - Search query my_query unsuccessful for authority OCLC_FAST")
|
170
174
|
get :search, params: { q: 'my_query', vocab: 'OCLC_FAST', maximumRecords: '3' }
|
171
175
|
expect(response.code).to eq('500')
|
@@ -179,6 +183,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
179
183
|
.to_return(status: 503)
|
180
184
|
end
|
181
185
|
it 'returns 503' do
|
186
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
182
187
|
expect(Rails.logger).to receive(:warn).with("Service Unavailable - Search query my_query unsuccessful for authority OCLC_FAST")
|
183
188
|
get :search, params: { q: 'my_query', vocab: 'OCLC_FAST', maximumRecords: '3' }
|
184
189
|
expect(response.code).to eq('503')
|
@@ -355,6 +360,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
355
360
|
stub_request(:get, 'http://id.worldcat.org/fast/530369').to_return(status: 500)
|
356
361
|
end
|
357
362
|
it 'returns 500' do
|
363
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
358
364
|
expect(Rails.logger).to receive(:warn).with("Internal Server Error - Fetch term 530369 unsuccessful for authority OCLC_FAST")
|
359
365
|
get :show, params: { id: '530369', vocab: 'OCLC_FAST' }
|
360
366
|
expect(response.code).to eq('500')
|
@@ -380,6 +386,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
380
386
|
end
|
381
387
|
it 'returns 500' do
|
382
388
|
msg = "RDF Format Error - Results from fetch term 530369 for authority OCLC_FAST was not identified as a valid RDF format. You may need to include the linkeddata gem."
|
389
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
383
390
|
expect(Rails.logger).to receive(:warn).with(msg)
|
384
391
|
get :show, params: { id: '530369', vocab: 'OCLC_FAST' }
|
385
392
|
expect(response.code).to eq('500')
|
@@ -391,6 +398,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
391
398
|
stub_request(:get, 'http://id.worldcat.org/fast/530369').to_return(status: 501)
|
392
399
|
end
|
393
400
|
it 'returns 500' do
|
401
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
394
402
|
expect(Rails.logger).to receive(:warn).with("Internal Server Error - Fetch term 530369 unsuccessful for authority OCLC_FAST")
|
395
403
|
get :show, params: { id: '530369', vocab: 'OCLC_FAST' }
|
396
404
|
expect(response.code).to eq('500')
|
@@ -403,6 +411,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
403
411
|
stub_request(:get, 'http://id.worldcat.org/fast/530369').to_return(status: 503)
|
404
412
|
end
|
405
413
|
it 'returns 503' do
|
414
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
406
415
|
expect(Rails.logger).to receive(:warn).with("Service Unavailable - Fetch term 530369 unsuccessful for authority OCLC_FAST")
|
407
416
|
get :show, params: { id: '530369', vocab: 'OCLC_FAST' }
|
408
417
|
expect(response.code).to eq('503')
|
@@ -414,6 +423,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
414
423
|
stub_request(:get, 'http://id.worldcat.org/fast/FAKE_ID').to_return(status: 404, body: '', headers: {})
|
415
424
|
end
|
416
425
|
it 'returns 404' do
|
426
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
417
427
|
expect(Rails.logger).to receive(:warn).with('Term Not Found - Fetch term FAKE_ID unsuccessful for authority OCLC_FAST')
|
418
428
|
get :show, params: { id: 'FAKE_ID', vocab: 'OCLC_FAST' }
|
419
429
|
expect(response.code).to eq('404')
|
@@ -566,6 +576,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
566
576
|
stub_request(:get, 'http://localhost/test_default/term?uri=http://id.worldcat.org/fast/530369').to_return(status: 500)
|
567
577
|
end
|
568
578
|
it 'returns 500' do
|
579
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
569
580
|
expect(Rails.logger).to receive(:warn).with("Internal Server Error - Fetch term http://id.worldcat.org/fast/530369 unsuccessful for authority LOD_TERM_URI_PARAM_CONFIG")
|
570
581
|
get :fetch, params: { vocab: 'LOD_TERM_URI_PARAM_CONFIG', uri: 'http://id.worldcat.org/fast/530369' }
|
571
582
|
expect(response.code).to eq('500')
|
@@ -580,6 +591,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
580
591
|
it 'returns 500' do
|
581
592
|
msg = "RDF Format Error - Results from fetch term http://id.worldcat.org/fast/530369 for authority LOD_TERM_URI_PARAM_CONFIG was not identified as a valid RDF format. " \
|
582
593
|
"You may need to include the linkeddata gem."
|
594
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
583
595
|
expect(Rails.logger).to receive(:warn).with(msg)
|
584
596
|
get :fetch, params: { uri: 'http://id.worldcat.org/fast/530369', vocab: 'LOD_TERM_URI_PARAM_CONFIG' }
|
585
597
|
expect(response.code).to eq('500')
|
@@ -591,6 +603,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
591
603
|
stub_request(:get, 'http://localhost/test_default/term?uri=http://id.worldcat.org/fast/530369').to_return(status: 501)
|
592
604
|
end
|
593
605
|
it 'returns 500' do
|
606
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
594
607
|
expect(Rails.logger).to receive(:warn).with("Internal Server Error - Fetch term http://id.worldcat.org/fast/530369 unsuccessful for authority LOD_TERM_URI_PARAM_CONFIG")
|
595
608
|
get :fetch, params: { uri: 'http://id.worldcat.org/fast/530369', vocab: 'LOD_TERM_URI_PARAM_CONFIG' }
|
596
609
|
expect(response.code).to eq('500')
|
@@ -603,6 +616,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
603
616
|
stub_request(:get, 'http://localhost/test_default/term?uri=http://id.worldcat.org/fast/530369').to_return(status: 503)
|
604
617
|
end
|
605
618
|
it 'returns 503' do
|
619
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
606
620
|
expect(Rails.logger).to receive(:warn).with("Service Unavailable - Fetch term http://id.worldcat.org/fast/530369 unsuccessful for authority LOD_TERM_URI_PARAM_CONFIG")
|
607
621
|
get :fetch, params: { uri: 'http://id.worldcat.org/fast/530369', vocab: 'LOD_TERM_URI_PARAM_CONFIG' }
|
608
622
|
expect(response.code).to eq('503')
|
@@ -614,6 +628,7 @@ describe Qa::LinkedDataTermsController, type: :controller do
|
|
614
628
|
stub_request(:get, 'http://localhost/test_default/term?uri=http://test.org/FAKE_ID').to_return(status: 404, body: '', headers: {})
|
615
629
|
end
|
616
630
|
it 'returns 404' do
|
631
|
+
expect(Rails.logger).to receive(:warn).with(graph_load_failure)
|
617
632
|
expect(Rails.logger).to receive(:warn).with('Term Not Found - Fetch term http://test.org/FAKE_ID unsuccessful for authority LOD_TERM_URI_PARAM_CONFIG')
|
618
633
|
get :fetch, params: { uri: 'http://test.org/FAKE_ID', vocab: 'LOD_TERM_URI_PARAM_CONFIG' }
|
619
634
|
expect(response.code).to eq('404')
|
@@ -2,8 +2,44 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
RSpec.describe Qa::LinkedData::RequestHeaderService do
|
4
4
|
let(:request) { double }
|
5
|
+
let(:request_id) { 'anID' }
|
6
|
+
let(:some_params) { double }
|
7
|
+
let(:location) { double }
|
8
|
+
let(:fake_ip) { '111.22.33.4444' }
|
9
|
+
let(:city) { 'Ithaca' }
|
10
|
+
let(:state) { 'New York' }
|
11
|
+
let(:country) { 'US' }
|
12
|
+
before do
|
13
|
+
allow(request).to receive(:request_id).and_return(request_id)
|
14
|
+
allow(request).to receive_message_chain(:path_parameters, :[]).with(:action).and_return('search') # rubocop:disable RSpec/MessageChain
|
15
|
+
allow(request).to receive(:location).and_return(location)
|
16
|
+
allow(request).to receive(:ip).and_return(fake_ip)
|
17
|
+
allow(location).to receive(:city).and_return(city)
|
18
|
+
allow(location).to receive(:state).and_return(state)
|
19
|
+
allow(location).to receive(:country).and_return(country)
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#initialize' do
|
23
|
+
context 'when Qa.config.suppress_ip_data_from_log is true' do
|
24
|
+
before { allow(Qa).to receive_message_chain(:config, :suppress_ip_data_from_log).and_return(true) } # rubocop:disable RSpec/MessageChain
|
25
|
+
it 'does not include IP info in log message' do
|
26
|
+
expect(Rails.logger).to receive(:info).with("******** SEARCH")
|
27
|
+
described_class.new(request: request, params: some_params)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when Qa.config.suppress_ip_data_from_log is false' do
|
32
|
+
before { allow(Qa).to receive_message_chain(:config, :suppress_ip_data_from_log).and_return(false) } # rubocop:disable RSpec/MessageChain
|
33
|
+
it 'does include IP info in log message' do
|
34
|
+
expect(Rails.logger).to receive(:info).with("******** SEARCH from IP #{fake_ip} in {city: #{city}, state: #{state}, country: #{country}}")
|
35
|
+
described_class.new(request: request, params: some_params)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
5
39
|
|
6
40
|
describe '#search_header' do
|
41
|
+
let(:request_id) { 's1' }
|
42
|
+
|
7
43
|
context 'when optional params are defined' do
|
8
44
|
let(:search_params) do
|
9
45
|
{
|
@@ -20,6 +56,8 @@ RSpec.describe Qa::LinkedData::RequestHeaderService do
|
|
20
56
|
it 'uses passed in params' do
|
21
57
|
expected_results =
|
22
58
|
{
|
59
|
+
request: request,
|
60
|
+
request_id: request_id,
|
23
61
|
context: true,
|
24
62
|
performance_data: true,
|
25
63
|
replacements: { 'maxRecords' => '4' },
|
@@ -37,6 +75,8 @@ RSpec.describe Qa::LinkedData::RequestHeaderService do
|
|
37
75
|
it 'returns defaults' do
|
38
76
|
expected_results =
|
39
77
|
{
|
78
|
+
request: request,
|
79
|
+
request_id: request_id,
|
40
80
|
context: false,
|
41
81
|
performance_data: false,
|
42
82
|
replacements: {},
|
@@ -53,6 +93,8 @@ RSpec.describe Qa::LinkedData::RequestHeaderService do
|
|
53
93
|
it 'returns defaults with language set to request language' do
|
54
94
|
expected_results =
|
55
95
|
{
|
96
|
+
request: request,
|
97
|
+
request_id: request_id,
|
56
98
|
context: false,
|
57
99
|
performance_data: false,
|
58
100
|
replacements: {},
|
@@ -67,6 +109,7 @@ RSpec.describe Qa::LinkedData::RequestHeaderService do
|
|
67
109
|
end
|
68
110
|
|
69
111
|
describe '#fetch_header' do
|
112
|
+
let(:request_id) { 'f1' }
|
70
113
|
context 'when optional params are defined' do
|
71
114
|
let(:fetch_params) do
|
72
115
|
{
|
@@ -84,6 +127,8 @@ RSpec.describe Qa::LinkedData::RequestHeaderService do
|
|
84
127
|
it 'uses passed in params' do
|
85
128
|
expected_results =
|
86
129
|
{
|
130
|
+
request: request,
|
131
|
+
request_id: request_id,
|
87
132
|
format: 'n3',
|
88
133
|
performance_data: true,
|
89
134
|
replacements: { 'extra' => 'data', 'even' => 'more data' },
|
@@ -101,6 +146,8 @@ RSpec.describe Qa::LinkedData::RequestHeaderService do
|
|
101
146
|
it 'returns defaults' do
|
102
147
|
expected_results =
|
103
148
|
{
|
149
|
+
request: request,
|
150
|
+
request_id: request_id,
|
104
151
|
format: 'json',
|
105
152
|
performance_data: false,
|
106
153
|
replacements: {},
|
@@ -117,6 +164,8 @@ RSpec.describe Qa::LinkedData::RequestHeaderService do
|
|
117
164
|
it 'returns defaults with language set to request language' do
|
118
165
|
expected_results =
|
119
166
|
{
|
167
|
+
request: request,
|
168
|
+
request_id: request_id,
|
120
169
|
format: 'json',
|
121
170
|
performance_data: false,
|
122
171
|
replacements: {},
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Anderson
|
@@ -16,7 +16,7 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date: 2019-12-
|
19
|
+
date: 2019-12-16 00:00:00.000000000 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: activerecord-import
|
@@ -60,6 +60,20 @@ dependencies:
|
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: geocoder
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
63
77
|
- !ruby/object:Gem::Dependency
|
64
78
|
name: ldpath
|
65
79
|
requirement: !ruby/object:Gem::Requirement
|