public void testCannotOpenWavesWhenNotLoggedIn() throws Exception { OpenListener listener = mock(OpenListener.class); clientFrontend.openRequest(null, WAVE_ID, IdFilters.ALL_IDS, NO_KNOWN_WAVELETS, listener); verify(listener).onFailure("Not logged in"); CommittedWaveletSnapshot snapshot = provideWavelet(WN1); clientFrontend.waveletUpdate(snapshot.snapshot, DELTAS); Mockito.verifyNoMoreInteractions(listener); }
public void testCannotOpenWavesWhenNotLoggedIn() throws Exception { OpenListener listener = mock(OpenListener.class); clientFrontend.openRequest(null, WAVE_ID, IdFilters.ALL_IDS, NO_KNOWN_WAVELETS, listener); verify(listener).onFailure(new ChannelException(ResponseCode.NOT_LOGGED_IN, "Not Logged in", null, Recoverable.NOT_RECOVERABLE, WAVE_ID, null)); CommittedWaveletSnapshot snapshot = provideWavelet(WN1); clientFrontend.waveletUpdate(snapshot.snapshot, DELTAS); Mockito.verifyNoMoreInteractions(listener); }
/** * Tests that a snapshot not matching the subscription filter is not received. * @throws WaveServerException */ @SuppressWarnings("unchecked") // Mock container public void testUnsubscribedSnapshotNotRecieved() throws Exception { OpenListener listener = openWave(IdFilter.ofPrefixes("non-existing")); verifyChannelId(listener); verifyMarker(listener, WAVE_ID); ReadableWaveletData wavelet = provideWavelet(WN1).snapshot; clientFrontend.waveletUpdate(wavelet, DELTAS); verify(listener, Mockito.never()).onUpdate(eq(WN1), any(CommittedWaveletSnapshot.class), Matchers.anyList(), any(HashedVersion.class), isNullMarker(), anyString()); }
/** * Tests that we get deltas. */ public void testReceivedDeltasSentToClient() throws Exception { CommittedWaveletSnapshot snapshot = provideWavelet(WN1); when(waveletProvider.getWaveletIds(WAVE_ID)).thenReturn(ImmutableSet.of(W1)); when(waveletProvider.checkAccessPermission(WN1, USER)).thenReturn(true); OpenListener listener = openWave(IdFilters.ALL_IDS); verify(listener).onUpdate(eq(WN1), eq(snapshot), eq(DeltaSequence.empty()), eq(V1), isNullMarker(), any(String.class)); verifyMarker(listener, WAVE_ID); TransformedWaveletDelta delta = TransformedWaveletDelta.cloneOperations(USER, V2, 1234567890L, Arrays.asList(UTIL.noOp())); DeltaSequence deltas = DeltaSequence.of(delta); clientFrontend.waveletUpdate(snapshot.snapshot, deltas); verify(listener).onUpdate(eq(WN1), isNullSnapshot(), eq(deltas), isNullVersion(), isNullMarker(), anyString()); }
/** * Tests that a snapshot not matching the subscription filter is not received. * @throws WaveServerException */ @SuppressWarnings("unchecked") // Mock container public void testUnsubscribedSnapshotNotRecieved() throws Exception { OpenListener listener = openWave(IdFilter.ofPrefixes("non-existing")); verifyChannelId(listener); verifyMarker(listener, WAVE_ID); ReadableWaveletData wavelet = provideWavelet(WN1).snapshot; clientFrontend.waveletUpdate(wavelet, DELTAS); verify(listener, Mockito.never()).onUpdate(eq(WN1), any(CommittedWaveletSnapshot.class), Matchers.anyList(), any(HashedVersion.class), isNullMarker(), anyString()); }
/** * Tests that we get deltas. */ public void testReceivedDeltasSentToClient() throws Exception { CommittedWaveletSnapshot snapshot = provideWavelet(WN1); when(waveletProvider.getWaveletIds(WAVE_ID)).thenReturn(ImmutableSet.of(W1)); when(waveletProvider.checkAccessPermission(WN1, USER)).thenReturn(true); OpenListener listener = openWave(IdFilters.ALL_IDS); verify(listener).onUpdate(eq(WN1), eq(snapshot), eq(DeltaSequence.empty()), eq(V0), isNullMarker(), any(String.class)); verifyMarker(listener, WAVE_ID); TransformedWaveletDelta delta = TransformedWaveletDelta.cloneOperations(USER, V2, 1234567890L, Arrays.asList(UTIL.noOp())); DeltaSequence deltas = DeltaSequence.of(delta); clientFrontend.waveletUpdate(snapshot.snapshot, deltas); verify(listener).onUpdate(eq(WN1), isNullSnapshot(), eq(deltas), isNullVersion(), isNullMarker(), anyString()); }
public void testImplicitParticipantsReceiveDeltaUpdates() throws WaveServerException, OperationException { CommittedWaveletSnapshot snapshot = provideWavelet(WN1); when(waveletProvider.getWaveletIds(WAVE_ID)).thenReturn(ImmutableSet.of(W1)); when(waveletProvider.checkAccessPermission(WN1, USER)).thenReturn(true); when(waveletProvider.checkAccessPermission(WN1, IMPLICIT_USER)).thenReturn(true); OpenListener listenerUser = openWave(USER, WAVE_ID, IdFilters.ALL_IDS); OpenListener listenerImplicitUser = openWave(IMPLICIT_USER, WAVE_ID, IdFilters.ALL_IDS); // Verify that explicit and implicit participants can open the the wavelet verify(listenerUser).onUpdate(eq(WN1), eq(snapshot), eq(DeltaSequence.empty()), eq(V1), isNullMarker(), any(String.class)); verifyMarker(listenerUser, WAVE_ID); verify(listenerImplicitUser).onUpdate(eq(WN1), eq(snapshot), eq(DeltaSequence.empty()), eq(V1), isNullMarker(), any(String.class)); verifyMarker(listenerImplicitUser, WAVE_ID); TransformedWaveletDelta delta = TransformedWaveletDelta.cloneOperations(USER, V2, 1234567890L, Arrays.asList(UTIL.noOp())); DeltaSequence deltas = DeltaSequence.of(delta); clientFrontend.waveletUpdate(snapshot.snapshot, deltas); // Verify that explicit and implicit participants gets the updates verify(listenerUser).onUpdate(eq(WN1), isNullSnapshot(), eq(deltas), isNullVersion(), isNullMarker(), anyString()); verify(listenerImplicitUser).onUpdate(eq(WN1), isNullSnapshot(), eq(deltas), isNullVersion(), isNullMarker(), anyString()); }
/** * Tests that if we open the index wave, we don't get updates from the * original wave if they contain no interesting operations (add/remove * participant or text). */ public void testUninterestingDeltasDontUpdateIndex() throws WaveServerException { provideWaves(Collections.<WaveId> emptySet()); OpenListener listener = openWave(INDEX_WAVE_ID, IdFilters.ALL_IDS); verifyChannelId(listener); verifyMarker(listener, INDEX_WAVE_ID); HashedVersion v1 = HashedVersion.unsigned(1L); TransformedWaveletDelta delta = makeDelta(USER, v1, 0L, UTIL.noOp()); DeltaSequence deltas = DeltaSequence.of(delta); WaveletData wavelet = WaveletDataUtil.createEmptyWavelet(WN1, USER, V0, 1234567890L); clientFrontend.waveletUpdate(wavelet, deltas); WaveletName dummyWaveletName = ClientFrontendImpl.createDummyWaveletName(INDEX_WAVE_ID); verify(listener, Mockito.never()).onUpdate(eq(dummyWaveletName), any(CommittedWaveletSnapshot.class), isDeltasStartingAt(0), any(HashedVersion.class), isNullMarker(), anyString()); }
/** * Tests that if we open the index wave, we don't get updates from the * original wave if they contain no interesting operations (add/remove * participant or text). */ public void testUninterestingDeltasDontUpdateIndex() throws WaveServerException { provideWaves(Collections.<WaveId> emptySet()); OpenListener listener = openWave(INDEX_WAVE_ID, IdFilters.ALL_IDS); verifyChannelId(listener); verifyMarker(listener, INDEX_WAVE_ID); HashedVersion v1 = HashedVersion.unsigned(1L); TransformedWaveletDelta delta = makeDelta(USER, v1, 0L, UTIL.noOp()); DeltaSequence deltas = DeltaSequence.of(delta); WaveletData wavelet = WaveletDataUtil.createEmptyWavelet(WN1, USER, V0, 1234567890L); clientFrontend.waveletUpdate(wavelet, deltas); WaveletName dummyWaveletName = ClientFrontendImpl.createDummyWaveletName(INDEX_WAVE_ID); verify(listener, Mockito.never()).onUpdate(eq(dummyWaveletName), any(CommittedWaveletSnapshot.class), isDeltasStartingAt(0), any(HashedVersion.class), isNullMarker(), anyString()); }