Class: Cucumber::Messages::Attachment
- Defined in:
- lib/cucumber/messages/attachment.rb
Overview
Represents the Attachment message in Cucumber's message protocol.
Attachments (parse errors, execution errors, screenshots, links...)
An attachment represents any kind of data associated with a line in a Source file. It can be used for:
- Syntax errors during parse time
- Screenshots captured and attached during execution
- Logs captured and attached during execution
It is not to be used for runtime errors raised/thrown during execution. This
is captured in TestResult.
Instance Attribute Summary collapse
-
#body ⇒ Object
readonly
The body of the attachment.
-
#content_encoding ⇒ Object
readonly
Whether to interpret
body"as-is" (IDENTITY) or if it needs to be Base64-decoded (BASE64). -
#file_name ⇒ Object
readonly
Suggested file name of the attachment.
-
#media_type ⇒ Object
readonly
The media type of the data.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
-
#test_case_started_id ⇒ Object
readonly
The identifier of the test case attempt if the attachment was created during the execution of a test step.
-
#test_run_hook_started_id ⇒ Object
readonly
The identifier of the test run hook execution if the attachment was created during the execution of a test run hook.
-
#test_run_started_id ⇒ Object
readonly
Not used; implementers should instead populate
testRunHookStartedIdif an attachment was created during the execution of a test run hook. -
#test_step_id ⇒ Object
readonly
The identifier of the test step if the attachment was created during the execution of a test step.
-
#timestamp ⇒ Object
readonly
When the attachment was created.
-
#url ⇒ Object
readonly
A URL where the attachment can be retrieved.
Class Method Summary collapse
-
.from_h(hash) ⇒ Object
Returns a new Attachment from the given hash.
Instance Method Summary collapse
-
#initialize(body: '', content_encoding: AttachmentContentEncoding::IDENTITY, file_name: nil, media_type: '', source: nil, test_case_started_id: nil, test_step_id: nil, url: nil, test_run_started_id: nil, test_run_hook_started_id: nil, timestamp: nil) ⇒ Attachment
constructor
A new instance of Attachment.
Methods inherited from Message
camelize, from_json, #to_h, #to_json, #type
Constructor Details
#initialize(body: '', content_encoding: AttachmentContentEncoding::IDENTITY, file_name: nil, media_type: '', source: nil, test_case_started_id: nil, test_step_id: nil, url: nil, test_run_started_id: nil, test_run_hook_started_id: nil, timestamp: nil) ⇒ Attachment
Returns a new instance of Attachment.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/cucumber/messages/attachment.rb', line 99 def initialize( body: '', content_encoding: AttachmentContentEncoding::IDENTITY, file_name: nil, media_type: '', source: nil, test_case_started_id: nil, test_step_id: nil, url: nil, test_run_started_id: nil, test_run_hook_started_id: nil, timestamp: nil ) @body = body @content_encoding = content_encoding @file_name = file_name @media_type = media_type @source = source @test_case_started_id = test_case_started_id @test_step_id = test_step_id @url = url @test_run_started_id = test_run_started_id @test_run_hook_started_id = test_run_hook_started_id @timestamp = super() end |
Instance Attribute Details
#body ⇒ Object (readonly)
The body of the attachment. If contentEncoding is IDENTITY, the attachment
is simply the string. If it's BASE64, the string should be Base64 decoded to
obtain the attachment.
28 29 30 |
# File 'lib/cucumber/messages/attachment.rb', line 28 def body @body end |
#content_encoding ⇒ Object (readonly)
Whether to interpret body "as-is" (IDENTITY) or if it needs to be Base64-decoded (BASE64).
Content encoding is not determined by the media type, but rather by the type of the object being attached:
- string: IDENTITY
- byte array: BASE64
- stream: BASE64
40 41 42 |
# File 'lib/cucumber/messages/attachment.rb', line 40 def content_encoding @content_encoding end |
#file_name ⇒ Object (readonly)
Suggested file name of the attachment. (Provided by the user as an argument to attach)
45 46 47 |
# File 'lib/cucumber/messages/attachment.rb', line 45 def file_name @file_name end |
#media_type ⇒ Object (readonly)
The media type of the data. This can be any valid
IANA Media Type
as well as Cucumber-specific media types such as text/x.cucumber.gherkin+plain
and text/x.cucumber.stacktrace+plain
53 54 55 |
# File 'lib/cucumber/messages/attachment.rb', line 53 def media_type @media_type end |
#source ⇒ Object (readonly)
Returns the value of attribute source.
55 56 57 |
# File 'lib/cucumber/messages/attachment.rb', line 55 def source @source end |
#test_case_started_id ⇒ Object (readonly)
The identifier of the test case attempt if the attachment was created during the execution of a test step
60 61 62 |
# File 'lib/cucumber/messages/attachment.rb', line 60 def test_case_started_id @test_case_started_id end |
#test_run_hook_started_id ⇒ Object (readonly)
The identifier of the test run hook execution if the attachment was created during the execution of a test run hook
92 93 94 |
# File 'lib/cucumber/messages/attachment.rb', line 92 def test_run_hook_started_id @test_run_hook_started_id end |
#test_run_started_id ⇒ Object (readonly)
Not used; implementers should instead populate testRunHookStartedId if an attachment was created during the execution of a test run hook
87 88 89 |
# File 'lib/cucumber/messages/attachment.rb', line 87 def test_run_started_id @test_run_started_id end |
#test_step_id ⇒ Object (readonly)
The identifier of the test step if the attachment was created during the execution of a test step
65 66 67 |
# File 'lib/cucumber/messages/attachment.rb', line 65 def test_step_id @test_step_id end |
#timestamp ⇒ Object (readonly)
When the attachment was created
97 98 99 |
# File 'lib/cucumber/messages/attachment.rb', line 97 def @timestamp end |
#url ⇒ Object (readonly)
A URL where the attachment can be retrieved. This field should not be set by Cucumber. It should be set by a program that reads a message stream and does the following for each Attachment message:
- Writes the body (after base64 decoding if necessary) to a new file.
- Sets
bodyandcontentEncodingtonull - Writes out the new attachment message
This will result in a smaller message stream, which can improve performance and reduce bandwidth of message consumers. It also makes it easier to process and download attachments separately from reports.
Deprecated; use ExternalAttachment instead.
82 83 84 |
# File 'lib/cucumber/messages/attachment.rb', line 82 def url @url end |
Class Method Details
.from_h(hash) ⇒ Object
Returns a new Attachment from the given hash. If the hash keys are camelCased, they are properly assigned to the corresponding snake_cased attributes.
Cucumber::Messages::Attachment.from_h(some_hash) # => #<Cucumber::Messages::Attachment:0x... ...>
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/cucumber/messages/attachment.rb', line 133 def self.from_h(hash) return nil if hash.nil? new( body: hash[:body], content_encoding: hash[:contentEncoding], file_name: hash[:fileName], media_type: hash[:mediaType], source: Source.from_h(hash[:source]), test_case_started_id: hash[:testCaseStartedId], test_step_id: hash[:testStepId], url: hash[:url], test_run_started_id: hash[:testRunStartedId], test_run_hook_started_id: hash[:testRunHookStartedId], timestamp: Timestamp.from_h(hash[:timestamp]) ) end |