From a31c51d054c87a2d7b95c1340d6b0ea89b899fcc Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Wed, 11 Apr 2018 09:15:22 +1000 Subject: [PATCH] Added unfolding test of binary attachment --- .../ical4j/data/UnfoldingReaderSpec.groovy | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/test/groovy/net/fortuna/ical4j/data/UnfoldingReaderSpec.groovy diff --git a/src/test/groovy/net/fortuna/ical4j/data/UnfoldingReaderSpec.groovy b/src/test/groovy/net/fortuna/ical4j/data/UnfoldingReaderSpec.groovy new file mode 100644 index 000000000..d21492bb1 --- /dev/null +++ b/src/test/groovy/net/fortuna/ical4j/data/UnfoldingReaderSpec.groovy @@ -0,0 +1,40 @@ +package net.fortuna.ical4j.data + +import net.fortuna.ical4j.model.Calendar +import net.fortuna.ical4j.model.ContentBuilder +import net.fortuna.ical4j.model.Property +import net.fortuna.ical4j.model.property.Attach +import spock.lang.Specification + +import java.security.MessageDigest + +class UnfoldingReaderSpec extends Specification { + + def 'verify unfolding encoded binary attachments'() { + given: 'a calendar object string with an encoded binary attachment' + def builder = new ContentBuilder() + def calendar = builder.calendar() { + prodid '-//Ben Fortuna//iCal4j 1.0//EN' + version '2.0' + vevent { + uid '1' + dtstamp() + dtstart '20090810', parameters: parameters { value 'DATE' } + action 'DISPLAY' + attach new Attach(new File('gradle/wrapper/gradle-wrapper.jar').bytes) + } + } + + CalendarOutputter outputter = [] + def calendarString = new StringWriter() + outputter.output(calendar, calendarString) + + when: 'the calendar object string is parsed' + Calendar parsed = new CalendarBuilder().build(new StringReader(calendarString as String)) + + then: 'the encoded binary is decoded correctly' + def attach = parsed.components[0].getProperty(Property.ATTACH) + def md5 = MessageDigest.getInstance("MD5") + md5.digest(attach.binary) == md5.digest(new File('gradle/wrapper/gradle-wrapper.jar').bytes) + } +}