bugsnag-maze-runner 9.4.0 → 9.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ebfe5ec9f34345cf0f5c2cbb5d94f9ed3ebfce52ad87f4e69580103c57c57870
4
- data.tar.gz: cf4a7628f486f944dda441b62caa8945fe315106e96966f4ffde1a40cee23c6d
3
+ metadata.gz: ae769213765ead600bb5d24630e7ee9e64cb9cd4a0af662d907254aad577b325
4
+ data.tar.gz: '08c6383f74a282fc41e04e5d12828ca27506da7205bbc979992794edc468c242'
5
5
  SHA512:
6
- metadata.gz: a03d87778582af7a94ff562b0794db23dfb4b9fc73df5545fec781514583f38b7f1cdf7cdf98dd9363a51089680bc84c43d8361d8471e08e29fd4182ae16d4f1
7
- data.tar.gz: 00d069f3ad7eb7f6d96bd89d08714f82507567c94ef518b3373fb0c5a533752e1fc63c396bc2ffee47be6042fa41975a00a21da91e249cc6b6e24559ed845b77
6
+ metadata.gz: 995669002344c3dd20206512b9a3cd1efa17db026d2355b5db6f0e1e5b4f4911113b13f2366919468acf5ff5c9d49361e143bfa918596f08a406c78a4ea4cc40
7
+ data.tar.gz: 7bf1354e0233fc6f760bb2b6fa35827cb597cb005f3d80ee3f2f9182c3379186817fb5dca4bf248d6c65eaa83b4bd43282164e858e9b437ed1629deb4bf39b64
@@ -149,3 +149,17 @@ Then('the received errors match:') do |table|
149
149
  end
150
150
  Maze.check.equal(requests.size, match_count, 'Unexpected number of requests matched the received payloads')
151
151
  end
152
+
153
+ # Verifies that a request was sent via a given method.
154
+ # Currently only supported with the reflective servlet.
155
+ #
156
+ # @step_input request_type [String] The type of request (error, session, build, etc)
157
+ # @step_input method [String] The request method expected (GET, POST, etc)
158
+ Then('the {request_type} request method equals {string}') do |request_type, method|
159
+ list = Maze::Server.list_for(request_type)
160
+ payload = list.current
161
+ if payload[:method].nil?
162
+ raise Test::Unit::AssertionFailedError.new("#{request_type} request had no receipt method listed")
163
+ end
164
+ Maze.check.equal(method, payload[:method], "Expected #{request_type} request method to be #{method}")
165
+ end
@@ -1,6 +1,6 @@
1
1
  ParameterType(
2
2
  name: 'request_type',
3
- regexp: /errors?|sessions?|builds?|logs?|metrics?|sampling requests?|traces?|uploads?|sourcemaps?|invalid requests?/,
3
+ regexp: /errors?|sessions?|builds?|logs?|metrics?|sampling requests?|traces?|uploads?|sourcemaps?|reflects?|reflections?|invalid requests?/,
4
4
  type: String,
5
5
  transformer: ->(s) { s }
6
6
  )
@@ -13,7 +13,7 @@ module Maze
13
13
  path = output_folder
14
14
  FileUtils.makedirs(path)
15
15
 
16
- request_types = %w[errors sessions builds uploads logs sourcemaps traces invalid]
16
+ request_types = %w[errors sessions builds uploads logs sourcemaps traces invalid reflections]
17
17
  request_types << 'sampling requests'
18
18
 
19
19
  request_types.each do |request_type|
@@ -51,6 +51,11 @@ module Maze
51
51
  end
52
52
  file.puts
53
53
 
54
+ if request.include?(:query)
55
+ file.puts "Query:"
56
+ file.puts JSON.pretty_generate(request[:query])
57
+ end
58
+
54
59
  file.puts "Request body:"
55
60
  if !invalid_request && headers["content-type"].first == 'application/json'
56
61
  file.puts JSON.pretty_generate(body)
data/lib/maze/server.rb CHANGED
@@ -93,6 +93,8 @@ module Maze
93
93
  uploads
94
94
  when 'sourcemap', 'sourcemaps'
95
95
  sourcemaps
96
+ when 'reflect', 'reflects', 'reflection', 'reflections'
97
+ reflections
96
98
  when 'invalid', 'invalid requests'
97
99
  invalid_requests
98
100
  else
@@ -163,6 +165,13 @@ module Maze
163
165
  @metrics ||= RequestList.new
164
166
  end
165
167
 
168
+ # A list of reflection requests received
169
+ #
170
+ # @return [RequestList] Received reflection requests
171
+ def reflections
172
+ @reflections ||= RequestList.new
173
+ end
174
+
166
175
  # A list of commands for a test fixture to perform. Strictly speaking these are responses to HTTP
167
176
  # requests, but the list behavior is all we need.
168
177
  #
@@ -272,6 +281,7 @@ module Maze
272
281
  traces.clear
273
282
  logs.clear
274
283
  invalid_requests.clear
284
+ reflections.clear
275
285
  end
276
286
  end
277
287
  end
@@ -11,6 +11,8 @@ module Maze
11
11
  # for POST requests they are expected to be given as JSON fields.
12
12
  class ReflectiveServlet < BaseServlet
13
13
 
14
+ REFLECTION_REQUEST_TYPE = 'reflection'
15
+
14
16
  # Accepts a GET request to provide a reflective response to.
15
17
  #
16
18
  # @param request [HTTPRequest] The incoming GET request
@@ -18,6 +20,16 @@ module Maze
18
20
  def do_GET(request, response)
19
21
  delay_ms = request.query['delay_ms']
20
22
  status = request.query['status']
23
+
24
+ logged_request = {
25
+ body: {},
26
+ query: Rack::Utils.parse_nested_query(request.query_string),
27
+ request: request,
28
+ response: response,
29
+ method: 'GET'
30
+ }
31
+ Server.list_for(REFLECTION_REQUEST_TYPE).add(logged_request)
32
+
21
33
  reflect response, delay_ms, status
22
34
  end
23
35
 
@@ -36,10 +48,20 @@ module Maze
36
48
  status = body['status']
37
49
  else
38
50
  query = Rack::Utils.parse_nested_query(request.query_string)
51
+ body = {}
39
52
  delay_ms = query['delay_ms']
40
53
  status = query['status']
41
54
  end
42
55
 
56
+ logged_request = {
57
+ body: body,
58
+ request: request,
59
+ response: response,
60
+ method: 'POST'
61
+ }
62
+ logged_request[:query] = query if query
63
+ Server.list_for(REFLECTION_REQUEST_TYPE).add(logged_request)
64
+
43
65
  reflect response, delay_ms, status
44
66
  rescue JSON::ParserError => e
45
67
  Bugsnag.notify e
data/lib/maze.rb CHANGED
@@ -7,7 +7,7 @@ require_relative 'maze/timers'
7
7
  # Glues the various parts of MazeRunner together that need to be accessed globally,
8
8
  # providing an alternative to the proliferation of global variables or singletons.
9
9
  module Maze
10
- VERSION = '9.4.0'
10
+ VERSION = '9.5.0'
11
11
 
12
12
  class << self
13
13
  attr_accessor :check, :driver, :internal_hooks, :mode, :start_time, :dynamic_retry, :public_address,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bugsnag-maze-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.4.0
4
+ version: 9.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Kirkland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-07 00:00:00.000000000 Z
11
+ date: 2024-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber