Skip to content

Commit ddff081

Browse files
committed
Skip user_id when it is null in PusherEvent constructor
Adding a null user_id stores a JsonNull, which makes getUserId() throw UnsupportedOperationException. Decrypted events on private-encrypted channels pass a null user ID, so they would hit this.
1 parent d0c3eda commit ddff081

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

‎src/main/java/com/pusher/client/channel/PusherEvent.java‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ public String toString() {
7070
public PusherEvent(String event, String channel, String userId, String data) {
7171
jsonObject.addProperty("event", event);
7272
jsonObject.addProperty("channel", channel);
73-
jsonObject.addProperty("user_id", userId);
73+
if (userId != null) {
74+
jsonObject.addProperty("user_id", userId);
75+
}
7476
jsonObject.addProperty("data", data);
7577
}
7678

‎src/test/java/com/pusher/client/channel/PusherEventTest.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.pusher.client.channel;
22

33
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertNull;
45

56
import org.junit.Before;
67
import org.junit.Test;
@@ -45,6 +46,19 @@ public void testUserIdIsExtracted() {
4546
);
4647
assertEquals("my-user-id", e.getUserId());
4748
}
49+
50+
@Test
51+
public void testUserIdIsSetByConstructor() {
52+
final PusherEvent e = new PusherEvent("my-event", "my-channel", "my-user-id", "{}");
53+
assertEquals("my-user-id", e.getUserId());
54+
}
55+
56+
@Test
57+
public void testNullUserIdFromConstructorIsNull() {
58+
final PusherEvent e = new PusherEvent("my-event", "my-channel", null, "{}");
59+
assertNull(e.getUserId());
60+
}
61+
4862
@Test
4963
public void testErrorData() {
5064
final PusherEvent e = PusherEvent.fromJson(

0 commit comments

Comments
 (0)