fitting 2.15.0 → 2.18.0

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