fitting 2.15.0 → 2.18.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +3 -3
  3. data/.rubocop.yml +31 -3
  4. data/CHANGELOG.md +21 -0
  5. data/README.md +96 -281
  6. data/fitting.gemspec +10 -10
  7. data/images/example.png +0 -0
  8. data/images/example2.png +0 -0
  9. data/images/logo.png +0 -0
  10. data/lib/fitting/configuration/legacy.rb +6 -5
  11. data/lib/fitting/configuration/yaml.rb +2 -2
  12. data/lib/fitting/cover/json_schema.rb +3 -2
  13. data/lib/fitting/cover/json_schema_enum.rb +1 -1
  14. data/lib/fitting/cover/json_schema_one_of.rb +1 -1
  15. data/lib/fitting/cover/response.rb +1 -5
  16. data/lib/fitting/documentation.rb +0 -2
  17. data/lib/fitting/matchers/response_matcher.rb +2 -1
  18. data/lib/fitting/records/documented/request.rb +1 -0
  19. data/lib/fitting/records/realized_unit.rb +13 -15
  20. data/lib/fitting/records/spherical/request.rb +1 -1
  21. data/lib/fitting/records/spherical/requests.rb +2 -1
  22. data/lib/fitting/records/spherical/response.rb +2 -2
  23. data/lib/fitting/records/test_unit/request.rb +4 -0
  24. data/lib/fitting/records/tested/request.rb +1 -1
  25. data/lib/fitting/records/unit/combination.rb +5 -6
  26. data/lib/fitting/records/unit/json_schema.rb +38 -33
  27. data/lib/fitting/records/unit/request.rb +1 -0
  28. data/lib/fitting/records/unit/response.rb +1 -0
  29. data/lib/fitting/report/action.rb +6 -9
  30. data/lib/fitting/report/actions.rb +8 -10
  31. data/lib/fitting/report/combination.rb +1 -15
  32. data/lib/fitting/report/combinations.rb +5 -6
  33. data/lib/fitting/report/console.rb +5 -4
  34. data/lib/fitting/report/prefix.rb +46 -20
  35. data/lib/fitting/report/prefixes.rb +17 -5
  36. data/lib/fitting/report/response.rb +19 -20
  37. data/lib/fitting/report/responses.rb +9 -8
  38. data/lib/fitting/report/test.rb +9 -11
  39. data/lib/fitting/report/tests.rb +10 -13
  40. data/lib/fitting/request.rb +0 -1
  41. data/lib/fitting/response.rb +4 -3
  42. data/lib/fitting/statistics/cover_error.rb +2 -0
  43. data/lib/fitting/statistics/cover_error_enum.rb +2 -0
  44. data/lib/fitting/statistics/cover_error_one_of.rb +2 -0
  45. data/lib/fitting/statistics/list.rb +5 -4
  46. data/lib/fitting/statistics/not_covered_responses.rb +1 -1
  47. data/lib/fitting/statistics/percent.rb +2 -1
  48. data/lib/fitting/statistics/template.rb +10 -8
  49. data/lib/fitting/storage/white_list.rb +7 -0
  50. data/lib/fitting/templates/realized_template.rb +2 -0
  51. data/lib/fitting/tests.rb +1 -1
  52. data/lib/fitting/version.rb +1 -1
  53. data/lib/fitting.rb +5 -2
  54. data/lib/tasks/fitting.rake +62 -54
  55. data/lib/templates/bomboniere/package-lock.json +91 -70
  56. data/lib/templates/bomboniere/package.json +2 -1
  57. data/lib/templates/bomboniere/src/components/HelloWorld.vue +3 -0
  58. metadata +34 -56
@@ -22,29 +22,33 @@ namespace :fitting do
22
22
  end
23
23
 
24
24
  prefixes.to_a.map do |prefix|
25
+ next if prefix.skip?
26
+
25
27
  prefix.actions.to_a.map do |action|
26
28
  action.responses.join(action.tests)
27
- end unless prefix.skip?
29
+ end
28
30
  end
29
31
 
30
32
  prefixes.to_a.map do |prefix|
33
+ next if prefix.skip?
34
+
31
35
  prefix.actions.to_a.map do |action|
32
36
  action.responses.to_a.map do |response|
33
37
  response.combinations.join(response.tests)
34
38
  end
35
- end unless prefix.skip?
39
+ end
36
40
  end
37
41
 
38
42
  report = JSON.pretty_generate(
39
- {
40
- tests_without_prefixes: tests.without_prefixes,
41
- prefixes_details: prefixes.to_a.map { |p| p.details }
42
- }
43
+ {
44
+ tests_without_prefixes: tests.without_prefixes,
45
+ prefixes_details: prefixes.to_a.map(&:details)
46
+ }
43
47
  )
44
48
 
45
49
  destination = 'fitting'
46
50
  FileUtils.mkdir_p(destination)
47
- FileUtils.rm_r Dir.glob("#{destination}/*"), :force => true
51
+ FileUtils.rm_r Dir.glob("#{destination}/*"), force: true
48
52
  File.open('fitting/report.json', 'w') { |file| file.write(report) }
49
53
 
50
54
  gem_path = $LOAD_PATH.find { |i| i.include?('fitting') }
@@ -54,6 +58,8 @@ namespace :fitting do
54
58
  json_schemas = {}
55
59
  combinations = {}
56
60
  prefixes.to_a.map do |prefix|
61
+ next if prefix.skip?
62
+
57
63
  prefix.actions.to_a.map do |action|
58
64
  action.responses.to_a.map do |response|
59
65
  json_schemas.merge!(response.id => response.body)
@@ -61,24 +67,24 @@ namespace :fitting do
61
67
  combinations.merge!(combination.id => combination.json_schema)
62
68
  end
63
69
  end
64
- end unless prefix.skip?
70
+ end
65
71
  end
66
72
  File.open('fitting/json_schemas.json', 'w') { |file| file.write(JSON.pretty_generate(json_schemas)) }
67
73
  File.open('fitting/combinations.json', 'w') { |file| file.write(JSON.pretty_generate(combinations)) }
68
74
  File.open('fitting/tests.json', 'w') { |file| file.write(JSON.pretty_generate(tests.to_h)) }
69
75
 
70
- js_path = Dir["#{destination}/js/*"].find { |f| f[0..14] == 'fitting/js/app.' and f[-3..-1] == '.js' }
76
+ js_path = Dir["#{destination}/js/*"].find { |f| f[0..14] == 'fitting/js/app.' and f[-3..] == '.js' }
71
77
  js_file = File.read(js_path)
72
- new_js_file = js_file.gsub("{stub:\"prefixes report\"}", report)
73
- new_js_file = new_js_file.gsub("{stub:\"for action page\"}", report)
74
- new_js_file = new_js_file.gsub("{stub:\"json-schemas\"}", JSON.pretty_generate(json_schemas))
75
- new_js_file = new_js_file.gsub("{stub:\"combinations\"}", JSON.pretty_generate(combinations))
76
- new_js_file = new_js_file.gsub("{stub:\"tests\"}", JSON.pretty_generate(tests.to_h))
78
+ new_js_file = js_file.gsub('{stub:"prefixes report"}', report)
79
+ new_js_file = new_js_file.gsub('{stub:"for action page"}', report)
80
+ new_js_file = new_js_file.gsub('{stub:"json-schemas"}', JSON.pretty_generate(json_schemas))
81
+ new_js_file = new_js_file.gsub('{stub:"combinations"}', JSON.pretty_generate(combinations))
82
+ new_js_file = new_js_file.gsub('{stub:"tests"}', JSON.pretty_generate(tests.to_h))
77
83
  File.open(js_path, 'w') { |file| file.write(new_js_file) }
78
84
 
79
85
  console = Fitting::Report::Console.new(
80
- tests.without_prefixes,
81
- prefixes.to_a.map { |p| p.details }
86
+ tests.without_prefixes,
87
+ prefixes.to_a.map(&:details)
82
88
  )
83
89
 
84
90
  puts console.output
@@ -88,53 +94,53 @@ namespace :fitting do
88
94
  exit 0
89
95
 
90
96
  actions.map do |action|
91
- action.to_hash["responses"].map do |response|
97
+ action.to_hash['responses'].map do |response|
92
98
  response['combination'] ||= []
93
- combinations = Fitting::Cover::JSONSchema.new(response['body']).combi + Fitting::Cover::JSONSchemaEnum.new(response['body']).combi + Fitting::Cover::JSONSchemaOneOf.new(response['body']).combi
94
- if combinations != []
95
- combinations.map do |combination|
96
- response['combination'].push(
97
- {
98
- 'json_schema' => combination[0],
99
- 'type' => combination[1][0],
100
- 'combination' => combination[1][1],
101
- 'tests' => [],
102
- 'error' => []
103
- }
104
- )
105
- end
99
+ combinations = Fitting::Cover::JSONSchema.new(response['body']).combi +
100
+ Fitting::Cover::JSONSchemaEnum.new(response['body']).combi +
101
+ Fitting::Cover::JSONSchemaOneOf.new(response['body']).combi
102
+ next unless combinations != []
103
+
104
+ combinations.map do |combination|
105
+ response['combination'].push(
106
+ {
107
+ 'json_schema' => combination[0],
108
+ 'type' => combination[1][0],
109
+ 'combination' => combination[1][1],
110
+ 'tests' => [],
111
+ 'error' => []
112
+ }
113
+ )
106
114
  end
107
115
  end
108
116
  end
109
117
 
110
118
  actions.map do |action|
111
- action.to_hash["responses"].map do |response|
119
+ action.to_hash['responses'].map do |response|
112
120
  response['tests'] ||= []
113
121
  response['tests'].map do |test|
114
- if response['combination'][0]
115
- response['combination'].map do |combination|
116
- begin
117
- res = JSON::Validator.fully_validate(combination['json_schema'], test['response']['body'])
118
- if res == []
119
- combination['tests'].push(test)
120
- response['tests'] = response['tests'] - [test]
121
- next
122
- else
123
- combination['error'].push({test: test, error: res})
124
- end
125
- rescue JSON::Schema::SchemaError => error
126
- combination['error'].push({test: test, error: error})
127
- end
122
+ next unless response['combination'][0]
123
+
124
+ response['combination'].map do |combination|
125
+ res = JSON::Validator.fully_validate(combination['json_schema'], test['response']['body'])
126
+ if res == []
127
+ combination['tests'].push(test)
128
+ response['tests'] = response['tests'] - [test]
129
+ next
130
+ else
131
+ combination['error'].push({ test: test, error: res })
128
132
  end
133
+ rescue JSON::Schema::SchemaError => e
134
+ combination['error'].push({ test: test, error: e })
129
135
  end
130
136
  end
131
137
  end
132
138
  end
133
139
 
134
- actions_test = {actions: actions, tests: tests}
140
+ actions_test = { actions: actions, tests: tests }
135
141
 
136
142
  makedirs('fitting')
137
- File.open('fitting/old_report.json', 'w') { |file| file.write(MultiJson.dump(actions_test)) }
143
+ File.open('fitting/old_report.json', 'w') { |file| file.write(JSON.dump(actions_test)) }
138
144
  end
139
145
 
140
146
  # deprecated
@@ -154,7 +160,8 @@ namespace :fitting do
154
160
 
155
161
  desc 'Fitting documentation responses cover'
156
162
  task :documentation_responses, [:size] => :environment do |_, args|
157
- if args.size == 'xs'
163
+ case args.size
164
+ when 'xs'
158
165
  documented_unit = Fitting::Statistics::Template.new(
159
166
  Fitting::Records::Spherical::Requests.new,
160
167
  Fitting.configuration
@@ -165,7 +172,7 @@ namespace :fitting do
165
172
  puts 'Not all responses from the whitelist are covered!'
166
173
  exit 1
167
174
  end
168
- elsif args.size == 's'
175
+ when 's'
169
176
  documented_unit = Fitting::Statistics::Template.new(
170
177
  Fitting::Records::Spherical::Requests.new,
171
178
  Fitting.configuration,
@@ -177,7 +184,7 @@ namespace :fitting do
177
184
  puts 'Not all responses from the whitelist are covered!'
178
185
  exit 1
179
186
  end
180
- elsif args.size == 'm'
187
+ when 'm'
181
188
  documented_unit = Fitting::Statistics::Template.new(
182
189
  Fitting::Records::Spherical::Requests.new,
183
190
  Fitting.configuration,
@@ -189,7 +196,7 @@ namespace :fitting do
189
196
  puts 'Not all responses from the whitelist are covered!'
190
197
  exit 1
191
198
  end
192
- elsif args.size == 'l'
199
+ when 'l'
193
200
  documented_unit = Fitting::Statistics::Template.new(
194
201
  Fitting::Records::Spherical::Requests.new,
195
202
  Fitting.configuration,
@@ -208,19 +215,20 @@ namespace :fitting do
208
215
 
209
216
  desc 'Fitting documentation responses cover error'
210
217
  task :documentation_responses_error, [:size] => :environment do |_, args|
211
- if args.size == 's'
218
+ case args.size
219
+ when 's'
212
220
  documented_unit = Fitting::Statistics::TemplateCoverError.new(
213
221
  Fitting::Records::Spherical::Requests.new,
214
222
  Fitting.configuration
215
223
  )
216
224
  puts documented_unit.stats
217
- elsif args.size == 'm'
225
+ when 'm'
218
226
  documented_unit = Fitting::Statistics::TemplateCoverErrorEnum.new(
219
227
  Fitting::Records::Spherical::Requests.new,
220
228
  Fitting.configuration
221
229
  )
222
230
  puts documented_unit.stats
223
- elsif args.size == 'l'
231
+ when 'l'
224
232
  documented_unit = Fitting::Statistics::TemplateCoverErrorOneOf.new(
225
233
  Fitting::Records::Spherical::Requests.new,
226
234
  Fitting.configuration
@@ -1185,15 +1185,48 @@
1185
1185
  }
1186
1186
  },
1187
1187
  "browserslist": {
1188
- "version": "4.12.2",
1189
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.2.tgz",
1190
- "integrity": "sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw==",
1188
+ "version": "4.16.6",
1189
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
1190
+ "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
1191
1191
  "dev": true,
1192
1192
  "requires": {
1193
- "caniuse-lite": "^1.0.30001088",
1194
- "electron-to-chromium": "^1.3.483",
1195
- "escalade": "^3.0.1",
1196
- "node-releases": "^1.1.58"
1193
+ "caniuse-lite": "^1.0.30001219",
1194
+ "colorette": "^1.2.2",
1195
+ "electron-to-chromium": "^1.3.723",
1196
+ "escalade": "^3.1.1",
1197
+ "node-releases": "^1.1.71"
1198
+ },
1199
+ "dependencies": {
1200
+ "caniuse-lite": {
1201
+ "version": "1.0.30001230",
1202
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz",
1203
+ "integrity": "sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ==",
1204
+ "dev": true
1205
+ },
1206
+ "colorette": {
1207
+ "version": "1.2.2",
1208
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz",
1209
+ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==",
1210
+ "dev": true
1211
+ },
1212
+ "electron-to-chromium": {
1213
+ "version": "1.3.739",
1214
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.739.tgz",
1215
+ "integrity": "sha512-+LPJVRsN7hGZ9EIUUiWCpO7l4E3qBYHNadazlucBfsXBbccDFNKUBAgzE68FnkWGJPwD/AfKhSzL+G+Iqb8A4A==",
1216
+ "dev": true
1217
+ },
1218
+ "escalade": {
1219
+ "version": "3.1.1",
1220
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1221
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1222
+ "dev": true
1223
+ },
1224
+ "node-releases": {
1225
+ "version": "1.1.72",
1226
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz",
1227
+ "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==",
1228
+ "dev": true
1229
+ }
1197
1230
  }
1198
1231
  },
1199
1232
  "buffer": {
@@ -1267,9 +1300,9 @@
1267
1300
  },
1268
1301
  "dependencies": {
1269
1302
  "ssri": {
1270
- "version": "6.0.1",
1271
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
1272
- "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
1303
+ "version": "6.0.2",
1304
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
1305
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
1273
1306
  "dev": true,
1274
1307
  "requires": {
1275
1308
  "figgy-pudding": "^3.5.1"
@@ -1594,6 +1627,12 @@
1594
1627
  "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1595
1628
  "dev": true
1596
1629
  },
1630
+ "highlight.js": {
1631
+ "version": "9.18.5",
1632
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz",
1633
+ "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==",
1634
+ "dev": true
1635
+ },
1597
1636
  "supports-color": {
1598
1637
  "version": "7.1.0",
1599
1638
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
@@ -1716,9 +1755,9 @@
1716
1755
  "dev": true
1717
1756
  },
1718
1757
  "color-string": {
1719
- "version": "1.5.3",
1720
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
1721
- "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
1758
+ "version": "1.6.0",
1759
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz",
1760
+ "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==",
1722
1761
  "dev": true,
1723
1762
  "requires": {
1724
1763
  "color-name": "^1.0.0",
@@ -2687,9 +2726,9 @@
2687
2726
  "dev": true
2688
2727
  },
2689
2728
  "dns-packet": {
2690
- "version": "1.3.1",
2691
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
2692
- "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
2729
+ "version": "1.3.4",
2730
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz",
2731
+ "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
2693
2732
  "dev": true,
2694
2733
  "requires": {
2695
2734
  "ip": "^1.1.0",
@@ -2830,31 +2869,25 @@
2830
2869
  "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
2831
2870
  "dev": true
2832
2871
  },
2833
- "electron-to-chromium": {
2834
- "version": "1.3.483",
2835
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz",
2836
- "integrity": "sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg==",
2837
- "dev": true
2838
- },
2839
2872
  "elliptic": {
2840
- "version": "6.5.3",
2841
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
2842
- "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
2873
+ "version": "6.5.4",
2874
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
2875
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
2843
2876
  "dev": true,
2844
2877
  "requires": {
2845
- "bn.js": "^4.4.0",
2846
- "brorand": "^1.0.1",
2878
+ "bn.js": "^4.11.9",
2879
+ "brorand": "^1.1.0",
2847
2880
  "hash.js": "^1.0.0",
2848
- "hmac-drbg": "^1.0.0",
2849
- "inherits": "^2.0.1",
2850
- "minimalistic-assert": "^1.0.0",
2851
- "minimalistic-crypto-utils": "^1.0.0"
2881
+ "hmac-drbg": "^1.0.1",
2882
+ "inherits": "^2.0.4",
2883
+ "minimalistic-assert": "^1.0.1",
2884
+ "minimalistic-crypto-utils": "^1.0.1"
2852
2885
  },
2853
2886
  "dependencies": {
2854
2887
  "bn.js": {
2855
- "version": "4.11.9",
2856
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
2857
- "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
2888
+ "version": "4.12.0",
2889
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
2890
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
2858
2891
  "dev": true
2859
2892
  }
2860
2893
  }
@@ -2972,12 +3005,6 @@
2972
3005
  "is-symbol": "^1.0.2"
2973
3006
  }
2974
3007
  },
2975
- "escalade": {
2976
- "version": "3.0.1",
2977
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz",
2978
- "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==",
2979
- "dev": true
2980
- },
2981
3008
  "escape-html": {
2982
3009
  "version": "1.0.3",
2983
3010
  "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -3817,9 +3844,9 @@
3817
3844
  "dev": true
3818
3845
  },
3819
3846
  "highlight.js": {
3820
- "version": "9.18.1",
3821
- "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz",
3822
- "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==",
3847
+ "version": "10.4.1",
3848
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz",
3849
+ "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==",
3823
3850
  "dev": true
3824
3851
  },
3825
3852
  "hmac-drbg": {
@@ -3840,9 +3867,9 @@
3840
3867
  "dev": true
3841
3868
  },
3842
3869
  "hosted-git-info": {
3843
- "version": "2.8.8",
3844
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
3845
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
3870
+ "version": "2.8.9",
3871
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
3872
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
3846
3873
  "dev": true
3847
3874
  },
3848
3875
  "hpack.js": {
@@ -4756,9 +4783,9 @@
4756
4783
  }
4757
4784
  },
4758
4785
  "lodash": {
4759
- "version": "4.17.19",
4760
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
4761
- "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
4786
+ "version": "4.17.21",
4787
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
4788
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
4762
4789
  "dev": true
4763
4790
  },
4764
4791
  "lodash.defaultsdeep": {
@@ -5289,12 +5316,6 @@
5289
5316
  }
5290
5317
  }
5291
5318
  },
5292
- "node-releases": {
5293
- "version": "1.1.58",
5294
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz",
5295
- "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==",
5296
- "dev": true
5297
- },
5298
5319
  "normalize-package-data": {
5299
5320
  "version": "2.5.0",
5300
5321
  "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -5741,9 +5762,9 @@
5741
5762
  "dev": true
5742
5763
  },
5743
5764
  "path-parse": {
5744
- "version": "1.0.6",
5745
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
5746
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
5765
+ "version": "1.0.7",
5766
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5767
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
5747
5768
  "dev": true
5748
5769
  },
5749
5770
  "path-to-regexp": {
@@ -5863,9 +5884,9 @@
5863
5884
  "dev": true
5864
5885
  },
5865
5886
  "postcss": {
5866
- "version": "7.0.32",
5867
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
5868
- "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
5887
+ "version": "7.0.36",
5888
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz",
5889
+ "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
5869
5890
  "dev": true,
5870
5891
  "requires": {
5871
5892
  "chalk": "^2.4.2",
@@ -8242,9 +8263,9 @@
8242
8263
  }
8243
8264
  },
8244
8265
  "url-parse": {
8245
- "version": "1.4.7",
8246
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
8247
- "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
8266
+ "version": "1.5.3",
8267
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
8268
+ "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
8248
8269
  "dev": true,
8249
8270
  "requires": {
8250
8271
  "querystringify": "^2.1.1",
@@ -9193,9 +9214,9 @@
9193
9214
  "dev": true
9194
9215
  },
9195
9216
  "ws": {
9196
- "version": "6.2.1",
9197
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
9198
- "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
9217
+ "version": "6.2.2",
9218
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
9219
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
9199
9220
  "dev": true,
9200
9221
  "requires": {
9201
9222
  "async-limiter": "~1.0.0"
@@ -9208,9 +9229,9 @@
9208
9229
  "dev": true
9209
9230
  },
9210
9231
  "y18n": {
9211
- "version": "4.0.0",
9212
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
9213
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
9232
+ "version": "4.0.1",
9233
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
9234
+ "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
9214
9235
  "dev": true
9215
9236
  },
9216
9237
  "yallist": {
@@ -16,7 +16,8 @@
16
16
  "@vue/cli-service": "~4.4.0",
17
17
  "vue-template-compiler": "^2.6.11",
18
18
  "serialize-javascript": ">=3.1.0",
19
- "node-forge": ">=0.10.0"
19
+ "node-forge": ">=0.10.0",
20
+ "highlight.js": ">=10.4.1"
20
21
  },
21
22
  "browserslist": [
22
23
  "> 1%",
@@ -53,6 +53,9 @@
53
53
  {{ responses_details.method }}
54
54
  </div>
55
55
  </div>
56
+ <div style="color: #b94283;" v-if="action_details.responses.tests_without_responses.length != 0">
57
+ &#9888;
58
+ </div>
56
59
  </router-link>
57
60
  </div>
58
61
  </div>