Skip to content

Commit 39f704c

Browse files
committed
fix(legacy-api): allow _expansions to be provided as true to return all expansions
closes #2932
1 parent c12f30e commit 39f704c

File tree

2 files changed

+52
-9
lines changed

2 files changed

+52
-9
lines changed

app/controllers/legacy_api/messages_controller.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def message
2424
message_hash = { id: message.id, token: message.token }
2525
expansions = api_params["_expansions"]
2626

27-
if expansions.include?("status")
27+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("status"))
2828
message_hash[:status] = {
2929
status: message.status,
3030
last_delivery_attempt: message.last_delivery_attempt&.to_f,
@@ -33,7 +33,7 @@ def message
3333
}
3434
end
3535

36-
if expansions.include?("details")
36+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("details"))
3737
message_hash[:details] = {
3838
rcpt_to: message.rcpt_to,
3939
mail_from: message.mail_from,
@@ -49,7 +49,7 @@ def message
4949
}
5050
end
5151

52-
if expansions.include?("inspection")
52+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("inspection"))
5353
message_hash[:inspection] = {
5454
inspected: message.inspected,
5555
spam: message.spam,
@@ -59,15 +59,15 @@ def message
5959
}
6060
end
6161

62-
if expansions.include?("plain_body")
62+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("plain_body"))
6363
message_hash[:plain_body] = message.plain_body
6464
end
6565

66-
if expansions.include?("html_body")
66+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("html_body"))
6767
message_hash[:html_body] = message.html_body
6868
end
6969

70-
if expansions.include?("attachments")
70+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("attachments"))
7171
message_hash[:attachments] = message.attachments.map do |attachment|
7272
{
7373
filename: attachment.filename.to_s,
@@ -79,15 +79,15 @@ def message
7979
end
8080
end
8181

82-
if expansions.include?("headers")
82+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("headers"))
8383
message_hash[:headers] = message.headers
8484
end
8585

86-
if expansions.include?("raw_message")
86+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("raw_message"))
8787
message_hash[:raw_message] = Base64.encode64(message.raw_message)
8888
end
8989

90-
if expansions.include?("activity_entries")
90+
if expansions == true || (expansions.is_a?(Array) && expansions.include?("activity_entries"))
9191
message_hash[:activity_entries] = {
9292
loads: message.loads,
9393
clicks: message.clicks

spec/apis/legacy_api/messages/message_spec.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,49 @@
8888
end
8989
end
9090

91+
context "when all expansions are requested" do
92+
let(:expansions) { true }
93+
94+
it "returns details about the message" do
95+
expect(response.status).to eq 200
96+
parsed_body = JSON.parse(response.body)
97+
expect(parsed_body["status"]).to eq "success"
98+
expect(parsed_body["data"]).to match({
99+
"id" => message.id,
100+
"token" => message.token,
101+
"status" => { "held" => false,
102+
"hold_expiry" => nil,
103+
"last_delivery_attempt" => nil,
104+
"status" => "Pending" },
105+
"details" => { "bounce" => false,
106+
"bounce_for_id" => 0,
107+
"direction" => "outgoing",
108+
"mail_from" => "[email protected]",
109+
"message_id" => message.message_id,
110+
"rcpt_to" => "[email protected]",
111+
"received_with_ssl" => nil,
112+
"size" => kind_of(String),
113+
"subject" => "An example message",
114+
"tag" => nil,
115+
"timestamp" => kind_of(Float) },
116+
"inspection" => { "inspected" => false,
117+
"spam" => false,
118+
"spam_score" => 0.0,
119+
"threat" => false,
120+
"threat_details" => nil },
121+
"plain_body" => message.plain_body,
122+
"html_body" => message.html_body,
123+
"attachments" => [],
124+
"headers" => message.headers,
125+
"raw_message" => Base64.encode64(message.raw_message),
126+
"activity_entries" => {
127+
"loads" => [],
128+
"clicks" => []
129+
}
130+
})
131+
end
132+
end
133+
91134
context "when the status expansion is requested" do
92135
let(:expansions) { ["status"] }
93136

0 commit comments

Comments
 (0)