inferno_core 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []