inferno_core 0.0.1

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.
Files changed (86) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +201 -0
  3. data/bin/inferno-console +8 -0
  4. data/lib/inferno.rb +15 -0
  5. data/lib/inferno/apps/web/application.rb +12 -0
  6. data/lib/inferno/apps/web/controllers/controller.rb +34 -0
  7. data/lib/inferno/apps/web/controllers/requests/show.rb +16 -0
  8. data/lib/inferno/apps/web/controllers/test_runs/create.rb +39 -0
  9. data/lib/inferno/apps/web/controllers/test_runs/results/index.rb +18 -0
  10. data/lib/inferno/apps/web/controllers/test_runs/show.rb +16 -0
  11. data/lib/inferno/apps/web/controllers/test_sessions/create.rb +26 -0
  12. data/lib/inferno/apps/web/controllers/test_sessions/results/index.rb +17 -0
  13. data/lib/inferno/apps/web/controllers/test_sessions/show.rb +16 -0
  14. data/lib/inferno/apps/web/controllers/test_suites/index.rb +13 -0
  15. data/lib/inferno/apps/web/controllers/test_suites/show.rb +16 -0
  16. data/lib/inferno/apps/web/router.rb +27 -0
  17. data/lib/inferno/apps/web/serializers/header.rb +12 -0
  18. data/lib/inferno/apps/web/serializers/input.rb +16 -0
  19. data/lib/inferno/apps/web/serializers/message.rb +10 -0
  20. data/lib/inferno/apps/web/serializers/request.rb +26 -0
  21. data/lib/inferno/apps/web/serializers/result.rb +21 -0
  22. data/lib/inferno/apps/web/serializers/serializer.rb +16 -0
  23. data/lib/inferno/apps/web/serializers/test.rb +17 -0
  24. data/lib/inferno/apps/web/serializers/test_group.rb +23 -0
  25. data/lib/inferno/apps/web/serializers/test_run.rb +19 -0
  26. data/lib/inferno/apps/web/serializers/test_session.rb +17 -0
  27. data/lib/inferno/apps/web/serializers/test_suite.rb +18 -0
  28. data/lib/inferno/config/application.rb +22 -0
  29. data/lib/inferno/config/boot.rb +5 -0
  30. data/lib/inferno/config/boot/db.rb +23 -0
  31. data/lib/inferno/config/boot/logging.rb +16 -0
  32. data/lib/inferno/config/boot/suites.rb +27 -0
  33. data/lib/inferno/config/boot/web.rb +17 -0
  34. data/lib/inferno/db/migrations/001_create_initial_structure.rb +165 -0
  35. data/lib/inferno/dsl.rb +35 -0
  36. data/lib/inferno/dsl/assertions.rb +93 -0
  37. data/lib/inferno/dsl/fhir_client.rb +152 -0
  38. data/lib/inferno/dsl/fhir_client_builder.rb +56 -0
  39. data/lib/inferno/dsl/fhir_manipulation.rb +25 -0
  40. data/lib/inferno/dsl/fhir_validation.rb +111 -0
  41. data/lib/inferno/dsl/http_client.rb +122 -0
  42. data/lib/inferno/dsl/http_client_builder.rb +54 -0
  43. data/lib/inferno/dsl/request_storage.rb +101 -0
  44. data/lib/inferno/dsl/results.rb +54 -0
  45. data/lib/inferno/dsl/runnable.rb +250 -0
  46. data/lib/inferno/entities.rb +19 -0
  47. data/lib/inferno/entities/attributes.rb +9 -0
  48. data/lib/inferno/entities/entity.rb +15 -0
  49. data/lib/inferno/entities/header.rb +42 -0
  50. data/lib/inferno/entities/message.rb +22 -0
  51. data/lib/inferno/entities/request.rb +166 -0
  52. data/lib/inferno/entities/result.rb +49 -0
  53. data/lib/inferno/entities/test.rb +173 -0
  54. data/lib/inferno/entities/test_group.rb +87 -0
  55. data/lib/inferno/entities/test_input.rb +20 -0
  56. data/lib/inferno/entities/test_run.rb +63 -0
  57. data/lib/inferno/entities/test_session.rb +26 -0
  58. data/lib/inferno/entities/test_suite.rb +73 -0
  59. data/lib/inferno/exceptions.rb +42 -0
  60. data/lib/inferno/public/217.bundle.js +1 -0
  61. data/lib/inferno/public/assets.json +6 -0
  62. data/lib/inferno/public/bundle.js +2 -0
  63. data/lib/inferno/public/bundle.js.LICENSE.txt +65 -0
  64. data/lib/inferno/public/e09b16f5cb645eb05f90c8f38f3409fb.png +0 -0
  65. data/lib/inferno/public/favicon.ico +0 -0
  66. data/lib/inferno/public/logo192.png +0 -0
  67. data/lib/inferno/public/logo512.png +0 -0
  68. data/lib/inferno/repositories.rb +27 -0
  69. data/lib/inferno/repositories/headers.rb +22 -0
  70. data/lib/inferno/repositories/in_memory_repository.rb +41 -0
  71. data/lib/inferno/repositories/messages.rb +35 -0
  72. data/lib/inferno/repositories/repository.rb +106 -0
  73. data/lib/inferno/repositories/requests.rb +89 -0
  74. data/lib/inferno/repositories/results.rb +72 -0
  75. data/lib/inferno/repositories/test_groups.rb +9 -0
  76. data/lib/inferno/repositories/test_runs.rb +46 -0
  77. data/lib/inferno/repositories/test_sessions.rb +56 -0
  78. data/lib/inferno/repositories/test_suites.rb +9 -0
  79. data/lib/inferno/repositories/tests.rb +9 -0
  80. data/lib/inferno/repositories/validate_runnable_reference.rb +42 -0
  81. data/lib/inferno/spec_support.rb +9 -0
  82. data/lib/inferno/test_runner.rb +81 -0
  83. data/lib/inferno/utils/middleware/request_logger.rb +55 -0
  84. data/lib/inferno/version.rb +3 -0
  85. data/spec/support/factory_bot.rb +21 -0
  86. metadata +514 -0
@@ -0,0 +1,9 @@
1
+ require_relative 'in_memory_repository'
2
+
3
+ module Inferno
4
+ module Repositories
5
+ # Repository that deals with persistence for the `TestSuite` entity.
6
+ class TestSuites < InMemoryRepository
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative 'in_memory_repository'
2
+
3
+ module Inferno
4
+ module Repositories
5
+ # Repository that deals with persistence for the `Test` entity.
6
+ class Tests < InMemoryRepository
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,42 @@
1
+ module Inferno
2
+ module Repositories
3
+ module ValidateRunnableReference
4
+ REFERENCE_KEYS = [:test_id, :test_group_id, :test_suite_id].freeze
5
+
6
+ def validate
7
+ super
8
+ reference_error_message = check_runnable_reference
9
+ errors.add(reference_error_message[:key], reference_error_message[:message]) if reference_error_message
10
+ end
11
+
12
+ def check_runnable_reference
13
+ present_keys = REFERENCE_KEYS.select { |reference_key| send(reference_key) }
14
+
15
+ if present_keys.length == 1
16
+ runnable_type = present_keys.first
17
+ id = values[runnable_type]
18
+ reference_exists = runnable_reference_exists?(runnable_type, id)
19
+ return if reference_exists
20
+
21
+ { key: runnable_type, message: "of #{id} does not exist" }
22
+ else
23
+ { key: :base, message: "must contain exactly one of 'test_id', 'test_group_id', or 'test_suite_id'" }
24
+ end
25
+ end
26
+
27
+ def runnable_reference_exists?(type, id)
28
+ repo =
29
+ case type
30
+ when :test_id
31
+ Inferno::Repositories::Tests.new
32
+ when :test_group_id
33
+ Inferno::Repositories::TestGroups.new
34
+ when :test_suite_id
35
+ Inferno::Repositories::TestSuites.new
36
+ end
37
+
38
+ repo.exists? id
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,9 @@
1
+ module Inferno
2
+ # @api private
3
+ # This module provides constants so that unit tests in suite repositories can
4
+ # load the factories defined in inferno.
5
+ module SpecSupport
6
+ FACTORY_BOT_SUPPORT_PATH = File.expand_path('../../spec/support/factory_bot', __dir__).freeze
7
+ FACTORY_PATH = File.expand_path('../../spec/factories', __dir__).freeze
8
+ end
9
+ end
@@ -0,0 +1,81 @@
1
+ module Inferno
2
+ # @api private
3
+ class TestRunner
4
+ attr_reader :test_session, :test_run
5
+
6
+ def initialize(test_session:, test_run:)
7
+ @test_session = test_session
8
+ @test_run = test_run
9
+ end
10
+
11
+ def results_repo
12
+ @results_repo ||= Repositories::Results.new
13
+ end
14
+
15
+ def run(runnable, inputs = {}, outputs = {})
16
+ if runnable < Entities::Test
17
+ run_test(runnable, inputs, outputs)
18
+ else
19
+ run_group(runnable, inputs, outputs)
20
+ end
21
+ end
22
+
23
+ def run_test(runnable, inputs = {}, outputs = {})
24
+ test_instance = runnable.new(inputs: inputs.merge(outputs), test_session_id: test_session.id)
25
+
26
+ result = begin
27
+ inputs.merge(outputs).each do |key, value|
28
+ test_instance.instance_variable_set("@#{key}", value)
29
+ end
30
+ test_instance.load_named_requests
31
+ test_instance.instance_eval(&runnable.block)
32
+ 'pass'
33
+ rescue Exceptions::TestResultException => e
34
+ test_instance.result_message = e.message
35
+ e.result
36
+ rescue StandardError => e
37
+ test_instance.result_message = "Error: #{e.message}"
38
+ 'error'
39
+ end
40
+
41
+ runnable.outputs.each do |output|
42
+ outputs[output] = test_instance.send(output)
43
+ end
44
+
45
+ [persist_result(
46
+ {
47
+ test_session_id: test_session.id,
48
+ test_run_id: test_run.id,
49
+ messages: test_instance.messages,
50
+ requests: test_instance.requests,
51
+ result: result,
52
+ result_message: test_instance.result_message
53
+ }.merge(runnable.reference_hash)
54
+ )]
55
+ end
56
+
57
+ def run_group(runnable, inputs = {}, outputs = {})
58
+ results = runnable.children.flat_map { |child| run(child, inputs, outputs) }
59
+
60
+ results << persist_result(
61
+ {
62
+ test_session_id: test_session.id,
63
+ test_run_id: test_run.id,
64
+ result: roll_up_result(results)
65
+ }.merge(runnable.reference_hash)
66
+ )
67
+ end
68
+
69
+ def persist_result(params)
70
+ results_repo.create(params)
71
+ end
72
+
73
+ def roll_up_result(results)
74
+ result_priority = Entities::Result::RESULT_OPTIONS
75
+ unique_results = results.map(&:result).uniq
76
+ result_priority.find do |result|
77
+ unique_results.include? result
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,55 @@
1
+ module Inferno
2
+ module Utils
3
+ # @api private
4
+ module Middleware
5
+ class RequestLogger
6
+ attr_reader :app
7
+
8
+ def initialize(app)
9
+ @app = app
10
+ end
11
+
12
+ def logger
13
+ @logger ||= Application['logger']
14
+ end
15
+
16
+ def call(env)
17
+ start = Time.now
18
+ log_request(env)
19
+ begin
20
+ response = app.call(env)
21
+ log_response(response, start, Time.now)
22
+ rescue StandardError => e
23
+ log_response([500, nil, nil], start, Time.now, e)
24
+ raise e
25
+ end
26
+
27
+ response
28
+ end
29
+
30
+ def log_response(response, start_time, end_time, exception = nil)
31
+ elapsed = end_time - start_time
32
+ status, _response_headers, response_body = response if response
33
+ status, = response if exception
34
+
35
+ logger.info("#{status} in #{elapsed.in_milliseconds} ms")
36
+ logger.info(response_body)
37
+ end
38
+
39
+ def log_request(env)
40
+ method = env['REQUEST_METHOD']
41
+ scheme = env['rack.url_scheme']
42
+ host = env['HTTP_HOST']
43
+ path = env['REQUEST_URI']
44
+ query = env['rack.request.query_string']
45
+ body = env['rack.input']
46
+ body = body.instance_of?(Puma::NullIO) ? nil : body.string
47
+ query_string = query.blank? ? '' : "?#{query}"
48
+
49
+ logger.info("#{method} #{scheme}://#{host}#{path}#{query_string}")
50
+ logger.info(body) if body.present?
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,3 @@
1
+ module Inferno
2
+ VERSION = '0.0.1'.freeze
3
+ end
@@ -0,0 +1,21 @@
1
+ class CreateStrategy
2
+ def initialize
3
+ @strategy = FactoryBot.strategy_by_name(:create).new
4
+ end
5
+
6
+ delegate :association, to: :@strategy
7
+
8
+ def result(evaluation)
9
+ result = nil
10
+ evaluation.object.tap do |instance|
11
+ evaluation.notify(:after_build, instance)
12
+ evaluation.notify(:before_create, instance)
13
+ result = evaluation.create(instance)
14
+ evaluation.notify(:after_create, result)
15
+ end
16
+
17
+ result
18
+ end
19
+ end
20
+
21
+ FactoryBot.register_strategy(:repo_create, CreateStrategy)
metadata ADDED
@@ -0,0 +1,514 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: inferno_core
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Stephen MacVicar
8
+ - Robert Scanlon
9
+ - Chase Zhou
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2021-06-15 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: blueprinter
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: dotenv
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: dry-system
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '='
62
+ - !ruby/object:Gem::Version
63
+ version: 0.18.1
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '='
69
+ - !ruby/object:Gem::Version
70
+ version: 0.18.1
71
+ - !ruby/object:Gem::Dependency
72
+ name: faraday
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: fhir_client
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: hanami-controller
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '1.3'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '1.3'
113
+ - !ruby/object:Gem::Dependency
114
+ name: hanami-router
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '1.3'
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '1.3'
127
+ - !ruby/object:Gem::Dependency
128
+ name: oj
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: pry
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :runtime
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: pry-byebug
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ - !ruby/object:Gem::Dependency
170
+ name: puma
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ - !ruby/object:Gem::Dependency
184
+ name: rake
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ - !ruby/object:Gem::Dependency
198
+ name: sequel
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ type: :runtime
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ - !ruby/object:Gem::Dependency
212
+ name: sqlite3
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ type: :runtime
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ - !ruby/object:Gem::Dependency
226
+ name: codecov
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ type: :development
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: database_cleaner-sequel
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ - !ruby/object:Gem::Dependency
254
+ name: factory_bot
255
+ requirement: !ruby/object:Gem::Requirement
256
+ requirements:
257
+ - - ">="
258
+ - !ruby/object:Gem::Version
259
+ version: '0'
260
+ type: :development
261
+ prerelease: false
262
+ version_requirements: !ruby/object:Gem::Requirement
263
+ requirements:
264
+ - - ">="
265
+ - !ruby/object:Gem::Version
266
+ version: '0'
267
+ - !ruby/object:Gem::Dependency
268
+ name: rack-test
269
+ requirement: !ruby/object:Gem::Requirement
270
+ requirements:
271
+ - - ">="
272
+ - !ruby/object:Gem::Version
273
+ version: '0'
274
+ type: :development
275
+ prerelease: false
276
+ version_requirements: !ruby/object:Gem::Requirement
277
+ requirements:
278
+ - - ">="
279
+ - !ruby/object:Gem::Version
280
+ version: '0'
281
+ - !ruby/object:Gem::Dependency
282
+ name: rspec
283
+ requirement: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - ">="
286
+ - !ruby/object:Gem::Version
287
+ version: '0'
288
+ type: :development
289
+ prerelease: false
290
+ version_requirements: !ruby/object:Gem::Requirement
291
+ requirements:
292
+ - - ">="
293
+ - !ruby/object:Gem::Version
294
+ version: '0'
295
+ - !ruby/object:Gem::Dependency
296
+ name: rubocop
297
+ requirement: !ruby/object:Gem::Requirement
298
+ requirements:
299
+ - - "~>"
300
+ - !ruby/object:Gem::Version
301
+ version: '1.9'
302
+ type: :development
303
+ prerelease: false
304
+ version_requirements: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - "~>"
307
+ - !ruby/object:Gem::Version
308
+ version: '1.9'
309
+ - !ruby/object:Gem::Dependency
310
+ name: rubocop-rake
311
+ requirement: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - ">="
314
+ - !ruby/object:Gem::Version
315
+ version: '0'
316
+ type: :development
317
+ prerelease: false
318
+ version_requirements: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - ">="
321
+ - !ruby/object:Gem::Version
322
+ version: '0'
323
+ - !ruby/object:Gem::Dependency
324
+ name: rubocop-rspec
325
+ requirement: !ruby/object:Gem::Requirement
326
+ requirements:
327
+ - - ">="
328
+ - !ruby/object:Gem::Version
329
+ version: '0'
330
+ type: :development
331
+ prerelease: false
332
+ version_requirements: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - ">="
335
+ - !ruby/object:Gem::Version
336
+ version: '0'
337
+ - !ruby/object:Gem::Dependency
338
+ name: rubocop-sequel
339
+ requirement: !ruby/object:Gem::Requirement
340
+ requirements:
341
+ - - ">="
342
+ - !ruby/object:Gem::Version
343
+ version: '0'
344
+ type: :development
345
+ prerelease: false
346
+ version_requirements: !ruby/object:Gem::Requirement
347
+ requirements:
348
+ - - ">="
349
+ - !ruby/object:Gem::Version
350
+ version: '0'
351
+ - !ruby/object:Gem::Dependency
352
+ name: simplecov
353
+ requirement: !ruby/object:Gem::Requirement
354
+ requirements:
355
+ - - ">="
356
+ - !ruby/object:Gem::Version
357
+ version: '0'
358
+ type: :development
359
+ prerelease: false
360
+ version_requirements: !ruby/object:Gem::Requirement
361
+ requirements:
362
+ - - ">="
363
+ - !ruby/object:Gem::Version
364
+ version: '0'
365
+ - !ruby/object:Gem::Dependency
366
+ name: webmock
367
+ requirement: !ruby/object:Gem::Requirement
368
+ requirements:
369
+ - - ">="
370
+ - !ruby/object:Gem::Version
371
+ version: '0'
372
+ type: :development
373
+ prerelease: false
374
+ version_requirements: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: '0'
379
+ - !ruby/object:Gem::Dependency
380
+ name: yard
381
+ requirement: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ version: '0'
386
+ type: :development
387
+ prerelease: false
388
+ version_requirements: !ruby/object:Gem::Requirement
389
+ requirements:
390
+ - - ">="
391
+ - !ruby/object:Gem::Version
392
+ version: '0'
393
+ description: Inferno Core is an open source tool for testing data exchanges enabled
394
+ by the FHIR standand
395
+ email:
396
+ - inferno@groups.mitre.org
397
+ executables:
398
+ - inferno-console
399
+ extensions: []
400
+ extra_rdoc_files: []
401
+ files:
402
+ - LICENSE
403
+ - bin/inferno-console
404
+ - lib/inferno.rb
405
+ - lib/inferno/apps/web/application.rb
406
+ - lib/inferno/apps/web/controllers/controller.rb
407
+ - lib/inferno/apps/web/controllers/requests/show.rb
408
+ - lib/inferno/apps/web/controllers/test_runs/create.rb
409
+ - lib/inferno/apps/web/controllers/test_runs/results/index.rb
410
+ - lib/inferno/apps/web/controllers/test_runs/show.rb
411
+ - lib/inferno/apps/web/controllers/test_sessions/create.rb
412
+ - lib/inferno/apps/web/controllers/test_sessions/results/index.rb
413
+ - lib/inferno/apps/web/controllers/test_sessions/show.rb
414
+ - lib/inferno/apps/web/controllers/test_suites/index.rb
415
+ - lib/inferno/apps/web/controllers/test_suites/show.rb
416
+ - lib/inferno/apps/web/router.rb
417
+ - lib/inferno/apps/web/serializers/header.rb
418
+ - lib/inferno/apps/web/serializers/input.rb
419
+ - lib/inferno/apps/web/serializers/message.rb
420
+ - lib/inferno/apps/web/serializers/request.rb
421
+ - lib/inferno/apps/web/serializers/result.rb
422
+ - lib/inferno/apps/web/serializers/serializer.rb
423
+ - lib/inferno/apps/web/serializers/test.rb
424
+ - lib/inferno/apps/web/serializers/test_group.rb
425
+ - lib/inferno/apps/web/serializers/test_run.rb
426
+ - lib/inferno/apps/web/serializers/test_session.rb
427
+ - lib/inferno/apps/web/serializers/test_suite.rb
428
+ - lib/inferno/config/application.rb
429
+ - lib/inferno/config/boot.rb
430
+ - lib/inferno/config/boot/db.rb
431
+ - lib/inferno/config/boot/logging.rb
432
+ - lib/inferno/config/boot/suites.rb
433
+ - lib/inferno/config/boot/web.rb
434
+ - lib/inferno/db/migrations/001_create_initial_structure.rb
435
+ - lib/inferno/dsl.rb
436
+ - lib/inferno/dsl/assertions.rb
437
+ - lib/inferno/dsl/fhir_client.rb
438
+ - lib/inferno/dsl/fhir_client_builder.rb
439
+ - lib/inferno/dsl/fhir_manipulation.rb
440
+ - lib/inferno/dsl/fhir_validation.rb
441
+ - lib/inferno/dsl/http_client.rb
442
+ - lib/inferno/dsl/http_client_builder.rb
443
+ - lib/inferno/dsl/request_storage.rb
444
+ - lib/inferno/dsl/results.rb
445
+ - lib/inferno/dsl/runnable.rb
446
+ - lib/inferno/entities.rb
447
+ - lib/inferno/entities/attributes.rb
448
+ - lib/inferno/entities/entity.rb
449
+ - lib/inferno/entities/header.rb
450
+ - lib/inferno/entities/message.rb
451
+ - lib/inferno/entities/request.rb
452
+ - lib/inferno/entities/result.rb
453
+ - lib/inferno/entities/test.rb
454
+ - lib/inferno/entities/test_group.rb
455
+ - lib/inferno/entities/test_input.rb
456
+ - lib/inferno/entities/test_run.rb
457
+ - lib/inferno/entities/test_session.rb
458
+ - lib/inferno/entities/test_suite.rb
459
+ - lib/inferno/exceptions.rb
460
+ - lib/inferno/public/217.bundle.js
461
+ - lib/inferno/public/assets.json
462
+ - lib/inferno/public/bundle.js
463
+ - lib/inferno/public/bundle.js.LICENSE.txt
464
+ - lib/inferno/public/e09b16f5cb645eb05f90c8f38f3409fb.png
465
+ - lib/inferno/public/favicon.ico
466
+ - lib/inferno/public/logo192.png
467
+ - lib/inferno/public/logo512.png
468
+ - lib/inferno/repositories.rb
469
+ - lib/inferno/repositories/headers.rb
470
+ - lib/inferno/repositories/in_memory_repository.rb
471
+ - lib/inferno/repositories/messages.rb
472
+ - lib/inferno/repositories/repository.rb
473
+ - lib/inferno/repositories/requests.rb
474
+ - lib/inferno/repositories/results.rb
475
+ - lib/inferno/repositories/test_groups.rb
476
+ - lib/inferno/repositories/test_runs.rb
477
+ - lib/inferno/repositories/test_sessions.rb
478
+ - lib/inferno/repositories/test_suites.rb
479
+ - lib/inferno/repositories/tests.rb
480
+ - lib/inferno/repositories/validate_runnable_reference.rb
481
+ - lib/inferno/spec_support.rb
482
+ - lib/inferno/test_runner.rb
483
+ - lib/inferno/utils/middleware/request_logger.rb
484
+ - lib/inferno/version.rb
485
+ - spec/support/factory_bot.rb
486
+ homepage: https://github.com/inferno_community/inferno-core
487
+ licenses:
488
+ - Apache 2.0
489
+ metadata:
490
+ homepage_uri: https://github.com/inferno_community/inferno-core
491
+ source_code_uri: https://github.com/inferno_community/inferno-core
492
+ changelog_uri: https://github.com/inferno_community/inferno-core/CHANGELOG.md
493
+ post_install_message:
494
+ rdoc_options: []
495
+ require_paths:
496
+ - lib
497
+ - spec
498
+ required_ruby_version: !ruby/object:Gem::Requirement
499
+ requirements:
500
+ - - ">="
501
+ - !ruby/object:Gem::Version
502
+ version: 2.7.0
503
+ required_rubygems_version: !ruby/object:Gem::Requirement
504
+ requirements:
505
+ - - ">="
506
+ - !ruby/object:Gem::Version
507
+ version: '0'
508
+ requirements: []
509
+ rubygems_version: 3.1.4
510
+ signing_key:
511
+ specification_version: 4
512
+ summary: Inferno Core is an open source tool for testing data exchanges enabled by
513
+ the FHIR standand
514
+ test_files: []