Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 8c52fc84 authored by Arnau Mora's avatar Arnau Mora Committed by GitHub
Browse files

Ignore invalid properties like empty GEO: (#82)



* Updated ical4j to `3.2.9`

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>

* Enabled suppress invalid properties

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>

* Added test with event with invalid property

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>

* Changed invalid geo test ical

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>

* Removed trailing comma

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>

* Removed old comment

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>

* Compressed `invalid-geo.ics` into `testFromReader_invalidProperty`

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>

* Add comment for test

---------

Signed-off-by: default avatarArnau Mora <arnyminer.z@gmail.com>
Co-authored-by: default avatarRicki Hirner <hirner@bitfire.at>
parent cf5c6631
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -18,8 +18,7 @@ import net.fortuna.ical4j.model.property.DtEnd
import net.fortuna.ical4j.model.property.DtStart
import net.fortuna.ical4j.model.property.Due
import net.fortuna.ical4j.util.TimeZones
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Assert.*
import org.junit.Test
import java.io.StringReader
import java.time.Duration
@@ -70,6 +69,25 @@ class ICalendarTest {
		assertEquals("#123456", calendar.getProperty<Property>(ICalendar.CALENDAR_COLOR).value)
	}

	@Test
	fun testFromReader_invalidProperty() {
		// The GEO property is invalid and should be ignored.
		// The calendar is however parsed without exception.
		assertNotNull(ICalendar.fromReader(
			StringReader(
				"BEGIN:VCALENDAR\n" +
						"PRODID:something\n" +
						"VERSION:2.0\n" +
						"BEGIN:VEVENT\n" +
						"UID:xxx@example.com\n" +
						"SUMMARY:Example Event with invalid GEO property\n" +
						"GEO:37.7957246371765\n" +
						"END:VEVENT\n" +
						"END:VCALENDAR"
			)
		))
	}

	@Test
	fun testMinifyVTimezone_UTC() {
		// Keep the only observance for UTC.
+7 −5
Original line number Diff line number Diff line
@@ -6,12 +6,10 @@ package at.bitfire.ical4android

import at.bitfire.ical4android.util.MiscUtils
import at.bitfire.ical4android.validation.ICalPreprocessor
import net.fortuna.ical4j.data.CalendarBuilder
import net.fortuna.ical4j.data.ParserException
import net.fortuna.ical4j.data.*
import net.fortuna.ical4j.model.*
import net.fortuna.ical4j.model.Calendar
import net.fortuna.ical4j.model.Date
import net.fortuna.ical4j.model.Parameter
import net.fortuna.ical4j.model.Property
import net.fortuna.ical4j.model.component.*
import net.fortuna.ical4j.model.parameter.Related
import net.fortuna.ical4j.model.property.*
@@ -86,7 +84,11 @@ open class ICalendar {
            // parse stream
            val calendar: Calendar
            try {
                calendar = CalendarBuilder().build(preprocessed)
                calendar = CalendarBuilder(
                    CalendarParserFactory.getInstance().get(),
                    ContentHandlerContext().withSupressInvalidProperties(true),
                    TimeZoneRegistryFactory.getInstance().createRegistry()
                ).build(preprocessed)
            } catch(e: ParserException) {
                throw InvalidCalendarException("Couldn't parse iCalendar", e)
            } catch(e: IllegalArgumentException) {