forked from inferno-framework/client-fhir-testing
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-validator-gen.rb
More file actions
91 lines (79 loc) · 2.6 KB
/
test-validator-gen.rb
File metadata and controls
91 lines (79 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
require 'sqlite3'
require 'yaml'
require 'uri'
require 'csv'
require 'dm-migrations'
require_relative './CapabilityStatement-datamapper'
require_relative './CapabilityStatement-db'
require_relative './checklist-db'
require_relative './parse-request'
require_relative './validator-search'
require_relative './datatypes-check'
class TestValidator
include ValidSearch
include CheckDatatypes
def initialize(file_name = 'data.db')
@db = SQLite3::Database.new(file_name)
end
def run_vaildation()
opts = YAML.load_file(File.join(File.dirname(__FILE__), 'proxy.yml'))
endpoint = URI::HTTP.build(host: opts[:Host], port: opts[:Port])
# DataMapper.auto_migrate!
DataMapper.auto_upgrade!
Request.each do |req|
re = ParseRequest.new(req, endpoint.to_s)
re.update
resource = re.req_resource
request_type = re.req_method
search_param = re.search_param
present = re.present
present_code = re.intCode
request_id = req.request_id
request_uri = req.request_uri
res = Response.last request_id: req.request_id
response_status = res.status
search_valid = nil
if re.search_param != nil
search_valid = (response_status == "200") and valid_shall(re.req_resource, re.search_param)
search_comb = combine_search(re.req_resource, re.search_param)
req_params = re.instance_variable_get(:@req_params)
param_type = []
req_params.each do |k, v|
sp = SearchParam.first type: re.req_resource, name: k
if sp.nil?
param_type.append(nil)
else
param_type.append(check_types(v, sp.stype))
end
end
end
CheckList.create resource: resource,
request_type: request_type,
search_param: search_param,
search_valid: search_valid,
search_combination: search_comb,
search_type: param_type,
present: present,
present_code: present_code,
request_id: request_id,
request_uri: request_uri,
response_status: response_status
end
# export to csv
cnames = []
CheckList.properties.to_a.each do |n|
cnames.append(n.name.to_s)
end
puts("Generating report to checklist.csv")
CSV.open("checklist.csv", "wb") do |csv|
csv << cnames
CheckList.each do |cl|
values = []
cnames.each do |n|
values.append(cl[n])
end
csv << values
end
end
end
end