Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add support for feedback envelope header item type
  • Loading branch information
denrase committed Sep 11, 2024
commit fd6a520b978ba06cdd53150e863a08e4e83ee8de
3 changes: 2 additions & 1 deletion sentry/src/main/java/io/sentry/SentryItemType.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public enum SentryItemType implements JsonSerializable {
ReplayVideo("replay_video"),
CheckIn("check_in"),
Statsd("statsd"),
Feedback("feedback"),
Unknown("__unknown__"); // DataCategory.Unknown

private final String itemType;
Expand Down Expand Up @@ -62,7 +63,7 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
writer.value(itemType);
}

static final class Deserializer implements JsonDeserializer<SentryItemType> {
public static final class Deserializer implements JsonDeserializer<SentryItemType> {

@Override
public @NotNull SentryItemType deserialize(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package io.sentry.protocol

import io.sentry.ILogger
import io.sentry.JsonObjectReader
import io.sentry.JsonObjectWriter
import io.sentry.SentryItemType
import org.junit.Test
import org.mockito.kotlin.mock
import java.io.StringReader
import java.io.StringWriter
import kotlin.test.assertEquals

class SentryItemTypeSerializationTest {

class Fixture {
val logger = mock<ILogger>()
}
private val fixture = Fixture()

@Test
fun serialize() {
assertEquals(serialize(SentryItemType.Session), json("session"))
assertEquals(serialize(SentryItemType.Event), json("event"))
assertEquals(serialize(SentryItemType.UserFeedback), json("user_report"))
assertEquals(serialize(SentryItemType.Attachment), json("attachment"))
assertEquals(serialize(SentryItemType.Transaction), json("transaction"))
assertEquals(serialize(SentryItemType.Profile), json("profile"))
assertEquals(serialize(SentryItemType.ClientReport), json("client_report"))
assertEquals(serialize(SentryItemType.ReplayEvent), json("replay_event"))
assertEquals(serialize(SentryItemType.ReplayRecording), json("replay_recording"))
assertEquals(serialize(SentryItemType.ReplayVideo), json("replay_video"))
assertEquals(serialize(SentryItemType.CheckIn), json("check_in"))
assertEquals(serialize(SentryItemType.Statsd), json("statsd"))
assertEquals(serialize(SentryItemType.Feedback), json("feedback"))
}

@Test
fun deserialize() {
assertEquals(deserialize(json("session")), SentryItemType.Session)
assertEquals(deserialize(json("event")), SentryItemType.Event)
assertEquals(deserialize(json("user_report")), SentryItemType.UserFeedback)
assertEquals(deserialize(json("attachment")), SentryItemType.Attachment)
assertEquals(deserialize(json("transaction")), SentryItemType.Transaction)
assertEquals(deserialize(json("profile")), SentryItemType.Profile)
assertEquals(deserialize(json("client_report")), SentryItemType.ClientReport)
assertEquals(deserialize(json("replay_event")), SentryItemType.ReplayEvent)
assertEquals(deserialize(json("replay_recording")), SentryItemType.ReplayRecording)
assertEquals(deserialize(json("replay_video")), SentryItemType.ReplayVideo)
assertEquals(deserialize(json("check_in")), SentryItemType.CheckIn)
assertEquals(deserialize(json("statsd")), SentryItemType.Statsd)
assertEquals(deserialize(json("feedback")), SentryItemType.Feedback)
}

private fun json(type: String): String {
return "{\"type\":\"${type}\"}"
}

private fun serialize(src: SentryItemType): String {
val wrt = StringWriter()
val jsonWrt = JsonObjectWriter(wrt, 100)
jsonWrt.beginObject()
jsonWrt.name("type")
src.serialize(jsonWrt, fixture.logger)
jsonWrt.endObject()
return wrt.toString()
}

private fun deserialize(json: String): SentryItemType {
val reader = JsonObjectReader(StringReader(json))
reader.beginObject()
reader.nextName()
return SentryItemType.Deserializer().deserialize(reader, fixture.logger)
}
}