Skip to content

Commit

Permalink
Merge pull request #160 from trivago/1.10.1
Browse files Browse the repository at this point in the history
1.10.1
  • Loading branch information
Benjamin Bischoff authored Apr 29, 2019
2 parents 4865451 + 9acebe2 commit e40fe62
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 56 deletions.
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

Back to [Readme](README.md).

## [1.10.1] - UNRELEASED
## [1.10.1] - 2019-04-29

### Fixed

* Incorrect wrapping for urls in custom parameters
* UTC timezone conversion for timestamps

### Changed

* more resilient mime type handling

## [1.10.0] - 2019-04-16

### Fixed
Expand Down
8 changes: 6 additions & 2 deletions example-project/json/attachments.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@
import java.nio.charset.StandardCharsets;

public class Embedding {

private String data;
private String decodedData;
@SerializedName("mime_type")
private MimeType mimeType = MimeType.UNKNOWN;

private transient String filename;

public String getData() {
return data;
}
Expand All @@ -44,11 +44,11 @@ public String getDecodedData() {
}

public void encodeData(final String data) {
if(mimeType.getContentType().equalsIgnoreCase("text/xml") || mimeType.getContentType().equalsIgnoreCase("application/xml")){
String xmlString = new String(Base64.decodeBase64(data.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
decodedData = xmlString.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
}else{
decodedData = new String(Base64.decodeBase64(data.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
decodedData = new String(Base64.decodeBase64(data.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
if (mimeType == MimeType.XML || mimeType == MimeType.APPLICATION_XML) {
decodedData = decodedData.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
} else if (mimeType == MimeType.HTML) {
decodedData = decodedData.replaceAll("\"", "'");
}
}

Expand All @@ -69,41 +69,40 @@ public void setFilename(final String filename) {
}

public boolean isImage() {
return
mimeType.getContentType().equalsIgnoreCase("image/png") ||
mimeType.getContentType().equalsIgnoreCase("image/gif") ||
mimeType.getContentType().equalsIgnoreCase("image/bmp") ||
mimeType.getContentType().equalsIgnoreCase("image/jpg") ||
mimeType.getContentType().equalsIgnoreCase("image/jpeg") ||
mimeType.getContentType().equalsIgnoreCase("image/svg") ||
mimeType.getContentType().equalsIgnoreCase("image/svg+xml");
return mimeType == MimeType.PNG ||
mimeType == MimeType.GIF ||
mimeType == MimeType.BMP ||
mimeType == MimeType.JPEG ||
mimeType == MimeType.JPG ||
mimeType == MimeType.SVG ||
mimeType == MimeType.SVG_XML;
}

public boolean isPlainText() {
return mimeType.getContentType().equalsIgnoreCase("text/plain");
}
}

public String getFileEnding() {
switch (mimeType) {
case PNG:
case GIF:
case BMP:
case JPG:
case JPEG:
case HTML:
case XML:
case JSON:
case APPLICATION_XML:
return mimeType.getContentType().substring(mimeType.getContentType().indexOf('/') + 1);
case SVG:
case SVG_XML:
return "svg";
case TXT:
return "txt";
case PDF:
return "pdf";
default:
return "unknown";
case PNG:
case GIF:
case BMP:
case JPG:
case JPEG:
case HTML:
case XML:
case JSON:
case APPLICATION_XML:
return mimeType.getContentType().substring(mimeType.getContentType().indexOf('/') + 1);
case SVG:
case SVG_XML:
return "svg";
case TXT:
return "txt";
case PDF:
return "pdf";
default:
return "unknown";
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.jsoup.Jsoup;

import java.time.Duration;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.regex.Matcher;
Expand Down Expand Up @@ -107,7 +108,8 @@ public static String turnUrlsIntoLinks(final String sourceString) {
String targetString = sourceString;
while (matcher.find()) {
String found = matcher.group();
targetString = targetString.replaceFirst(Pattern.quote(found), Matcher.quoteReplacement("<a href='" + found + "' target='_blank'>" + found + "</a>"));
targetString = targetString.replaceFirst(Pattern.quote(found),
Matcher.quoteReplacement("<a href='" + found + "' target='_blank'>" + found + "</a>"));
}
return targetString;
}
Expand All @@ -129,15 +131,17 @@ public static ZonedDateTime convertTimestampToZonedDateTime(final String timesta

public static String convertZonedDateTimeToDateString(final ZonedDateTime startDateTime) {
try {
return startDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
return startDateTime.withZoneSameInstant(ZoneId.systemDefault()).
format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
} catch (Exception ignored) {
}
return "";
}

public static String convertZonedDateTimeToTimeString(final ZonedDateTime startDateTime) {
try {
return startDateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
return startDateTime.withZoneSameInstant(ZoneId.systemDefault()).
format(DateTimeFormatter.ofPattern("HH:mm:ss"));
} catch (Exception ignored) {
}
return "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ limitations under the License.

<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="Content-Security-Policy" content="default-src * data: blob: 'unsafe-inline' 'unsafe-eval';
script-src * data: blob: 'unsafe-inline' 'unsafe-eval';
connect-src * data: blob: 'unsafe-inline';
img-src * data: blob: 'unsafe-inline';
frame-src * data: blob: ;
style-src * data: blob: 'unsafe-inline';
font-src * data: blob: 'unsafe-inline';"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="${reportDetails.generatorName} - ${reportDetails.pageName}">
<meta name="author" content="${reportDetails.generatorName}">
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package com.trivago.cluecumber.json.pojo;

import com.trivago.cluecumber.constants.MimeType;
import org.codehaus.plexus.util.Base64;
import org.junit.Before;
import org.junit.Test;

import com.trivago.cluecumber.constants.MimeType;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import org.codehaus.plexus.util.Base64;

public class EmbeddingTest {
private Embedding embedding;

Expand Down Expand Up @@ -59,14 +57,14 @@ public void isPlainTextTest() {
embedding.setMimeType(MimeType.TXT);
assertThat(embedding.isPlainText(), is(true));
}

@Test
public void getDecodedDataTest() {
String originalInput = "This is getDecodeData() Test !!!";
String encodeString = new String(Base64.encodeBase64(originalInput.getBytes()));
embedding.setMimeType(MimeType.TXT);
embedding.encodeData(encodeString);
assertThat(embedding.getDecodedData(),is("This is getDecodeData() Test !!!"));
assertThat(embedding.getDecodedData(), is("This is getDecodeData() Test !!!"));
}

@Test
Expand All @@ -75,9 +73,18 @@ public void getDecodedDataForXMLTest() {
String encodeString = new String(Base64.encodeBase64(originalInput.getBytes()));
embedding.setMimeType(MimeType.XML);
embedding.encodeData(encodeString);
assertThat(embedding.getDecodedData(),is("&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;&lt;note&gt;&lt;to&gt;Tove&lt;/to&gt;&lt;from&gt;Jani&lt;/from&gt;&lt;heading&gt;Reminder&lt;/heading&gt;&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;&lt;/note&gt;"));
assertThat(embedding.getDecodedData(), is("&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;&lt;note&gt;&lt;to&gt;Tove&lt;/to&gt;&lt;from&gt;Jani&lt;/from&gt;&lt;heading&gt;Reminder&lt;/heading&gt;&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;&lt;/note&gt;"));
}

@Test
public void getDecodedDataForHTMLTest() {
String originalInput = "<a href=\"test\">test</a>";
String encodeString = new String(Base64.encodeBase64(originalInput.getBytes()));
embedding.setMimeType(MimeType.HTML);
embedding.encodeData(encodeString);
assertThat(embedding.getDecodedData(), is("<a href='test'>test</a>"));
}

@Test
public void getFileEndingTest() {
embedding.setMimeType(MimeType.PNG);
Expand All @@ -100,11 +107,11 @@ public void getFileEndingTest() {
assertThat(embedding.getFileEnding(), is("svg"));
embedding.setMimeType(MimeType.SVG_XML);
assertThat(embedding.getFileEnding(), is("svg"));
embedding.setMimeType(MimeType.TXT);
embedding.setMimeType(MimeType.TXT);
assertThat(embedding.getFileEnding(), is("txt"));
embedding.setMimeType(MimeType.PDF);
assertThat(embedding.getFileEnding(), is("pdf"));
embedding.setMimeType(MimeType.UNKNOWN);
assertThat(embedding.getFileEnding(), is("unknown"));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
import org.junit.Test;

import java.time.Month;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Objects;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
Expand Down Expand Up @@ -65,8 +68,12 @@ public void convertTimestampToZonedDateTimeInvalidTest() {
public void convertZonedDateTimeToDateStringTest() {
String timestamp = "2018-09-14T13:02:15.123Z";
ZonedDateTime zonedDateTime = RenderingUtils.convertTimestampToZonedDateTime(timestamp);

final String dateLocal = Objects.requireNonNull(zonedDateTime).withZoneSameInstant(ZoneId.systemDefault()).
format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

String dateString = RenderingUtils.convertZonedDateTimeToDateString(zonedDateTime);
assertThat(dateString, is("2018-09-14"));
assertThat(dateString, is(dateLocal));
}

@Test
Expand All @@ -80,8 +87,12 @@ public void convertZonedDateTimeToDateStringInvalidTest() {
public void convertZonedDateTimeToTimeStringTest() {
String timestamp = "2018-09-14T13:02:15.123Z";
ZonedDateTime zonedDateTime = RenderingUtils.convertTimestampToZonedDateTime(timestamp);

final String timeLocal = Objects.requireNonNull(zonedDateTime).withZoneSameInstant(ZoneId.systemDefault()).
format(DateTimeFormatter.ofPattern("HH:mm:ss"));

String timeString = RenderingUtils.convertZonedDateTimeToTimeString(zonedDateTime);
assertThat(timeString, is("13:02:15"));
assertThat(timeString, is(timeLocal));
}

@Test
Expand Down

0 comments on commit e40fe62

Please sign in to comment.