[TESTS] Make onDisconnect tests more robust

Before refactoring the function ensure the tests cover all cases. This
fixes a bug where the payload ttl was too low in some instances causing
backDate to do no work when it should.
This commit is contained in:
Julian Knutsen 2019-12-04 16:52:58 -08:00
parent c38ff9bf95
commit 688405bc6d
No known key found for this signature in database
GPG Key ID: D85F536DB3615B2D

View File

@ -57,7 +57,7 @@ public class P2PDataStoreDisconnectTest {
ProtectedStoragePayload protectedStoragePayload = new ExpirableProtectedStoragePayloadStub(ownerKeys.getPublic(), ttl); ProtectedStoragePayload protectedStoragePayload = new ExpirableProtectedStoragePayloadStub(ownerKeys.getPublic(), ttl);
ProtectedStorageEntry protectedStorageEntry = testState.mockedStorage.getProtectedStorageEntry(protectedStoragePayload, ownerKeys); ProtectedStorageEntry protectedStorageEntry = testState.mockedStorage.getProtectedStorageEntry(protectedStoragePayload, ownerKeys);
testState.mockedStorage.addProtectedStorageEntry(protectedStorageEntry, TestState.getTestNodeAddress(), null); testState.mockedStorage.addProtectedStorageEntry(protectedStorageEntry, getTestNodeAddress(), null);
return protectedStorageEntry; return protectedStorageEntry;
} }
@ -85,17 +85,30 @@ public class P2PDataStoreDisconnectTest {
// TESTCASE: Bad peer info // TESTCASE: Bad peer info
@Test @Test
public void peerConnectionUnknown() { public void peerConnectionUnknown() throws CryptoException, NoSuchAlgorithmException {
when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(false); when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(false);
ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 2);
SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry);
this.testState.mockedStorage.onDisconnect(CloseConnectionReason.SOCKET_CLOSED, mockedConnection); this.testState.mockedStorage.onDisconnect(CloseConnectionReason.SOCKET_CLOSED, mockedConnection);
verifyStateAfterDisconnect(this.testState, beforeState, false, false);
} }
// TESTCASE: Intended disconnects don't trigger expiration // TESTCASE: Intended disconnects don't trigger expiration
@Test @Test
public void connectionClosedIntended() { public void connectionClosedIntended() throws CryptoException, NoSuchAlgorithmException {
when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true); when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true);
ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 2);
SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry);
this.testState.mockedStorage.onDisconnect(CloseConnectionReason.CLOSE_REQUESTED_BY_PEER, mockedConnection); this.testState.mockedStorage.onDisconnect(CloseConnectionReason.CLOSE_REQUESTED_BY_PEER, mockedConnection);
verifyStateAfterDisconnect(this.testState, beforeState, false, false);
} }
// TESTCASE: Peer NodeAddress unknown // TESTCASE: Peer NodeAddress unknown
@ -104,7 +117,7 @@ public class P2PDataStoreDisconnectTest {
when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true); when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true);
when(mockedConnection.getPeersNodeAddressOptional()).thenReturn(Optional.empty()); when(mockedConnection.getPeersNodeAddressOptional()).thenReturn(Optional.empty());
ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 1); ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 2);
SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry); SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry);
@ -134,7 +147,7 @@ public class P2PDataStoreDisconnectTest {
when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true); when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true);
when(mockedConnection.getPeersNodeAddressOptional()).thenReturn(Optional.of(new NodeAddress("notTestNode", 2020))); when(mockedConnection.getPeersNodeAddressOptional()).thenReturn(Optional.of(new NodeAddress("notTestNode", 2020)));
ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 1); ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 2);
SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry); SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry);
@ -149,7 +162,7 @@ public class P2PDataStoreDisconnectTest {
when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true); when(this.mockedConnection.hasPeersNodeAddress()).thenReturn(true);
when(mockedConnection.getPeersNodeAddressOptional()).thenReturn(Optional.of(TestState.getTestNodeAddress())); when(mockedConnection.getPeersNodeAddressOptional()).thenReturn(Optional.of(TestState.getTestNodeAddress()));
ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 1); ProtectedStorageEntry protectedStorageEntry = populateTestState(testState, 2);
SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry); SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry);
@ -158,7 +171,7 @@ public class P2PDataStoreDisconnectTest {
this.testState.mockedStorage.onDisconnect(CloseConnectionReason.SOCKET_CLOSED, mockedConnection); this.testState.mockedStorage.onDisconnect(CloseConnectionReason.SOCKET_CLOSED, mockedConnection);
verifyStateAfterDisconnect(this.testState, beforeState, true, false); verifyStateAfterDisconnect(this.testState, beforeState, true, true);
} }
// TESTCASE: ProtectedStoragePayloads implementing the PersistablePayload interface are correctly removed // TESTCASE: ProtectedStoragePayloads implementing the PersistablePayload interface are correctly removed
@ -186,7 +199,7 @@ public class P2PDataStoreDisconnectTest {
testState.mockedStorage.getProtectedStorageEntry(protectedStoragePayload, ownerKeys); testState.mockedStorage.getProtectedStorageEntry(protectedStoragePayload, ownerKeys);
testState.mockedStorage.addProtectedStorageEntry( testState.mockedStorage.addProtectedStorageEntry(
protectedStorageEntry, TestState.getTestNodeAddress(), null); protectedStorageEntry, getTestNodeAddress(), null);
SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry); SavedTestState beforeState = this.testState.saveTestState(protectedStorageEntry);