Skip to content

Commit aa81ee1

Browse files
Added support for sending the client key in the connect operation
1 parent d31f388 commit aa81ee1

File tree

3 files changed

+36
-4
lines changed

3 files changed

+36
-4
lines changed

ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ class ConnectClientOperation extends ClientOperation {
77

88
private final String applicationId;
99
private final String sessionToken;
10+
private final String clientKey;
1011

11-
ConnectClientOperation(String applicationId, String sessionToken) {
12+
ConnectClientOperation(String applicationId, String sessionToken, String clientKey) {
1213
this.applicationId = applicationId;
1314
this.sessionToken = sessionToken;
15+
this.clientKey = clientKey;
1416
}
1517

1618
@Override
@@ -19,6 +21,7 @@ JSONObject getJSONObjectRepresentation() throws JSONException {
1921
jsonObject.put("op", "connect");
2022
jsonObject.put("applicationId", applicationId);
2123
jsonObject.put("sessionToken", sessionToken);
24+
jsonObject.put("clientKey", clientKey);
2225
return jsonObject;
2326
}
2427
}

ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ public void onOpen() {
386386
@Override
387387
public Task<Void> then(Task<String> task) throws Exception {
388388
String sessionToken = task.getResult();
389-
return sendOperationAsync(new ConnectClientOperation(applicationId, sessionToken));
389+
return sendOperationAsync(new ConnectClientOperation(applicationId, sessionToken, clientKey));
390390
}
391391
}).continueWith(new Continuation<Void, Void>() {
392392
public Void then(Task<Void> task) {

ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,13 +413,42 @@ public void testSessionTokenSentOnSubscribe() {
413413

414414
@Test
415415
public void testEmptySessionTokenOnSubscribe() {
416-
when(mockUser.getSessionToken()).thenReturn("the token");
417416
when(webSocketClient.getState()).thenReturn(WebSocketClient.State.CONNECTED);
418417
parseLiveQueryClient.subscribe(ParseQuery.getQuery("Test"));
419418
verify(webSocketClient, times(1)).send(contains("\"op\":\"connect\""));
420419
verify(webSocketClient, times(1)).send(and(
421420
contains("\"op\":\"subscribe\""),
422-
contains("\"sessionToken\":\"the token\"")));
421+
not(contains("\"sessionToken\":"))));
422+
}
423+
424+
@Test
425+
public void testClientKeySentOnConnect() throws Exception {
426+
Parse.Configuration configuration = new Parse.Configuration.Builder(null)
427+
.applicationId("1234")
428+
.clientKey("1234")
429+
.build();
430+
ParsePlugins.reset();
431+
ParsePlugins.initialize(null, configuration);
432+
433+
parseLiveQueryClient = ParseLiveQueryClient.Factory.getClient(new URI(""), new WebSocketClientFactory() {
434+
@Override
435+
public WebSocketClient createInstance(WebSocketClient.WebSocketClientCallback webSocketClientCallback, URI hostUrl) {
436+
TestParseLiveQueryClient.this.webSocketClientCallback = webSocketClientCallback;
437+
webSocketClient = mock(WebSocketClient.class);
438+
return webSocketClient;
439+
}
440+
}, new ImmediateExecutor());
441+
442+
parseLiveQueryClient.reconnect();
443+
webSocketClientCallback.onOpen();
444+
verify(webSocketClient, times(1)).send(contains("\"clientKey\":\"1234\""));
445+
}
446+
447+
@Test
448+
public void testEmptyClientKeyOnConnect() {
449+
parseLiveQueryClient.reconnect();
450+
webSocketClientCallback.onOpen();
451+
verify(webSocketClient, times(1)).send(not(contains("\"clientKey\":")));
423452
}
424453

425454
@Test

0 commit comments

Comments
 (0)