diff --git a/ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java b/ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java index 83f427c..e7bbdbb 100644 --- a/ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/ConnectClientOperation.java @@ -7,10 +7,12 @@ class ConnectClientOperation extends ClientOperation { private final String applicationId; private final String sessionToken; + private final String clientKey; - ConnectClientOperation(String applicationId, String sessionToken) { + ConnectClientOperation(String applicationId, String sessionToken, String clientKey) { this.applicationId = applicationId; this.sessionToken = sessionToken; + this.clientKey = clientKey; } @Override @@ -19,6 +21,7 @@ JSONObject getJSONObjectRepresentation() throws JSONException { jsonObject.put("op", "connect"); jsonObject.put("applicationId", applicationId); jsonObject.put("sessionToken", sessionToken); + jsonObject.put("clientKey", clientKey); return jsonObject; } } diff --git a/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java index ef7284b..5169aef 100644 --- a/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java +++ b/ParseLiveQuery/src/main/java/com/parse/livequery/ParseLiveQueryClientImpl.java @@ -386,7 +386,7 @@ public void onOpen() { @Override public Task then(Task task) throws Exception { String sessionToken = task.getResult(); - return sendOperationAsync(new ConnectClientOperation(applicationId, sessionToken)); + return sendOperationAsync(new ConnectClientOperation(applicationId, sessionToken, clientKey)); } }).continueWith(new Continuation() { public Void then(Task task) { diff --git a/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java b/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java index 2738d15..e805629 100644 --- a/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java +++ b/ParseLiveQuery/src/test/java/com/parse/TestParseLiveQueryClient.java @@ -413,13 +413,42 @@ public void testSessionTokenSentOnSubscribe() { @Test public void testEmptySessionTokenOnSubscribe() { - when(mockUser.getSessionToken()).thenReturn("the token"); when(webSocketClient.getState()).thenReturn(WebSocketClient.State.CONNECTED); parseLiveQueryClient.subscribe(ParseQuery.getQuery("Test")); verify(webSocketClient, times(1)).send(contains("\"op\":\"connect\"")); verify(webSocketClient, times(1)).send(and( contains("\"op\":\"subscribe\""), - contains("\"sessionToken\":\"the token\""))); + not(contains("\"sessionToken\":")))); + } + + @Test + public void testClientKeySentOnConnect() throws Exception { + Parse.Configuration configuration = new Parse.Configuration.Builder(null) + .applicationId("1234") + .clientKey("1234") + .build(); + ParsePlugins.reset(); + ParsePlugins.initialize(null, configuration); + + parseLiveQueryClient = ParseLiveQueryClient.Factory.getClient(new URI(""), new WebSocketClientFactory() { + @Override + public WebSocketClient createInstance(WebSocketClient.WebSocketClientCallback webSocketClientCallback, URI hostUrl) { + TestParseLiveQueryClient.this.webSocketClientCallback = webSocketClientCallback; + webSocketClient = mock(WebSocketClient.class); + return webSocketClient; + } + }, new ImmediateExecutor()); + + parseLiveQueryClient.reconnect(); + webSocketClientCallback.onOpen(); + verify(webSocketClient, times(1)).send(contains("\"clientKey\":\"1234\"")); + } + + @Test + public void testEmptyClientKeyOnConnect() { + parseLiveQueryClient.reconnect(); + webSocketClientCallback.onOpen(); + verify(webSocketClient, times(1)).send(not(contains("\"clientKey\":"))); } @Test