Skip to content

Commit

Permalink
fix(legacy-api): allow _expansions to be provided as true to return a…
Browse files Browse the repository at this point in the history
…ll expansions

closes #2932
  • Loading branch information
adamcooke committed Apr 18, 2024
1 parent c12f30e commit 39f704c
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 9 deletions.
18 changes: 9 additions & 9 deletions app/controllers/legacy_api/messages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def message
message_hash = { id: message.id, token: message.token }
expansions = api_params["_expansions"]

if expansions.include?("status")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("status"))
message_hash[:status] = {
status: message.status,
last_delivery_attempt: message.last_delivery_attempt&.to_f,
Expand All @@ -33,7 +33,7 @@ def message
}
end

if expansions.include?("details")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("details"))
message_hash[:details] = {
rcpt_to: message.rcpt_to,
mail_from: message.mail_from,
Expand All @@ -49,7 +49,7 @@ def message
}
end

if expansions.include?("inspection")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("inspection"))
message_hash[:inspection] = {
inspected: message.inspected,
spam: message.spam,
Expand All @@ -59,15 +59,15 @@ def message
}
end

if expansions.include?("plain_body")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("plain_body"))
message_hash[:plain_body] = message.plain_body
end

if expansions.include?("html_body")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("html_body"))
message_hash[:html_body] = message.html_body
end

if expansions.include?("attachments")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("attachments"))
message_hash[:attachments] = message.attachments.map do |attachment|
{
filename: attachment.filename.to_s,
Expand All @@ -79,15 +79,15 @@ def message
end
end

if expansions.include?("headers")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("headers"))
message_hash[:headers] = message.headers
end

if expansions.include?("raw_message")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("raw_message"))
message_hash[:raw_message] = Base64.encode64(message.raw_message)
end

if expansions.include?("activity_entries")
if expansions == true || (expansions.is_a?(Array) && expansions.include?("activity_entries"))
message_hash[:activity_entries] = {
loads: message.loads,
clicks: message.clicks
Expand Down
43 changes: 43 additions & 0 deletions spec/apis/legacy_api/messages/message_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,49 @@
end
end

context "when all expansions are requested" do
let(:expansions) { true }

it "returns details about the message" do
expect(response.status).to eq 200
parsed_body = JSON.parse(response.body)
expect(parsed_body["status"]).to eq "success"
expect(parsed_body["data"]).to match({
"id" => message.id,
"token" => message.token,
"status" => { "held" => false,
"hold_expiry" => nil,
"last_delivery_attempt" => nil,
"status" => "Pending" },
"details" => { "bounce" => false,
"bounce_for_id" => 0,
"direction" => "outgoing",
"mail_from" => "test@example.com",
"message_id" => message.message_id,
"rcpt_to" => "john@example.com",
"received_with_ssl" => nil,
"size" => kind_of(String),
"subject" => "An example message",
"tag" => nil,
"timestamp" => kind_of(Float) },
"inspection" => { "inspected" => false,
"spam" => false,
"spam_score" => 0.0,
"threat" => false,
"threat_details" => nil },
"plain_body" => message.plain_body,
"html_body" => message.html_body,
"attachments" => [],
"headers" => message.headers,
"raw_message" => Base64.encode64(message.raw_message),
"activity_entries" => {
"loads" => [],
"clicks" => []
}
})
end
end

context "when the status expansion is requested" do
let(:expansions) { ["status"] }

Expand Down

0 comments on commit 39f704c

Please sign in to comment.