Skip to content

Commit 317f350

Browse files
fixes adding additional quotes to string variables, closes #149
1 parent 65db87b commit 317f350

2 files changed

Lines changed: 90 additions & 2 deletions

File tree

src/main/java/com/mailjet/client/helpers/StringMapSerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
public class StringMapSerializer implements JsonSerializer<Map> {
1616
@Override
1717
public JsonElement serialize(Map map, Type type, JsonSerializationContext jsonSerializationContext) {
18-
Map<String, String> stringMap = new HashMap<>(map.size());
18+
Map<String, JsonElement> stringMap = new HashMap<>(map.size());
1919

2020
for (Object entry: map.entrySet()) {
2121
Map.Entry<String, Object> objectEntry = (Map.Entry<String, Object>) entry;
2222

2323
String key = objectEntry.getKey();
24-
String value = jsonSerializationContext.serialize(objectEntry.getValue()).toString();
24+
JsonElement value = jsonSerializationContext.serialize(objectEntry.getValue());
2525

2626
stringMap.put(key, value);
2727
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.mailjet.client;
2+
3+
import com.mailjet.client.errors.MailjetException;
4+
import com.mailjet.client.resource.*;
5+
import com.mailjet.client.resource.sms.SmsSend;
6+
import com.mailjet.client.transactional.*;
7+
import com.mailjet.client.transactional.response.SendEmailsResponse;
8+
import okhttp3.mockwebserver.MockResponse;
9+
import okhttp3.mockwebserver.MockWebServer;
10+
import okhttp3.mockwebserver.RecordedRequest;
11+
import org.json.JSONArray;
12+
import org.json.JSONObject;
13+
import org.junit.AfterClass;
14+
import org.junit.BeforeClass;
15+
import org.junit.Test;
16+
17+
import java.io.IOException;
18+
import java.util.HashMap;
19+
import java.util.Map;
20+
21+
import static org.junit.Assert.assertEquals;
22+
import static org.junit.Assert.assertTrue;
23+
24+
public class TransactionalEmailBuilderTest {
25+
26+
private static MailjetClient client;
27+
private static MockWebServer mockWebServer;
28+
29+
@BeforeClass
30+
public static void initialize() throws IOException {
31+
mockWebServer = new MockWebServer();
32+
mockWebServer.start();
33+
34+
final ClientOptions clientOptions = ClientOptions
35+
.builder()
36+
.baseUrl(mockWebServer.url("/").toString())
37+
.apiSecretKey("secret-key")
38+
.apiKey("api-key")
39+
.bearerAccessToken("bearer-token")
40+
.build();
41+
42+
client = new MailjetClient(clientOptions);
43+
}
44+
45+
@Test
46+
public void transactionalEmail_WithVariables_ShouldCorrectlyPassVariables() throws MailjetException, InterruptedException {
47+
48+
// arrange
49+
String expectedBody = "{\"Messages\":[{\"Cc\":[],\"TrackClicks\":\"enabled\",\"Bcc\":[],\"Priority\":3,\"Headers\":{},\"From\":{\"Email\":\"xxxxxxxx@xxxxxxx.com\",\"Name\":\"xxxxxxxx xxxxxxxxxx\"},\"Attachments\":[],\"TemplateLanguage\":true,\"TrackOpens\":\"enabled\",\"Variables\":{\"E_DATE\":\"a string text\",\"E_YEAR\":\"another text\",\"E_MAIL_ID\":\"a last text example\"},\"CustomID\":\"8c0725fa-403c-496e-ac7e-xxxxxxxxx\",\"InlinedAttachments\":[],\"To\":[{\"Email\":\"xxxxxxxx@xxxxxxx.com\",\"Name\":\"xxxxxxxx xxxxxxxxxx\"}],\"TemplateID\":1234567}]}";
50+
51+
mockWebServer.enqueue(new MockResponse().setResponseCode(201).setBody("{}"));
52+
53+
Map<String, String> variables = new HashMap<>();
54+
variables.put("E_DATE", "a string text");
55+
variables.put("E_YEAR", "another text");
56+
variables.put("E_MAIL_ID", "a last text example");
57+
58+
TransactionalEmail message = TransactionalEmail
59+
.builder()
60+
.to(new SendContact("xxxxxxxx@xxxxxxx.com", "xxxxxxxx xxxxxxxxxx"))
61+
.from(new SendContact("xxxxxxxx@xxxxxxx.com", "xxxxxxxx xxxxxxxxxx"))
62+
.templateID(1234567L)
63+
.templateLanguage(true)
64+
.priority(3)
65+
.customID("8c0725fa-403c-496e-ac7e-xxxxxxxxx")
66+
.variables(variables)
67+
.trackOpens(TrackOpens.ENABLED)
68+
.trackClicks(TrackClicks.ENABLED)
69+
.build();
70+
71+
SendEmailsRequest request = SendEmailsRequest.builder()
72+
.message(message)
73+
.build();
74+
75+
// act
76+
SendEmailsResponse response = request.sendWith(client);
77+
78+
// assert
79+
RecordedRequest recordedRequest = mockWebServer.takeRequest();
80+
81+
assertEquals(expectedBody, recordedRequest.getBody().readUtf8());
82+
}
83+
84+
@AfterClass
85+
public static void tearDown() throws IOException {
86+
mockWebServer.shutdown();
87+
}
88+
}

0 commit comments

Comments
 (0)