Integration tests: protect Whitebox#getInternalState

pull/711/head
pabloFuente 2022-03-25 12:21:56 +01:00
parent ab8fdec4f4
commit b8079ce519
2 changed files with 24 additions and 4 deletions

View File

@ -89,7 +89,12 @@ public class WebhookIntegrationTest {
private void mockWebhookHttpClient(int millisecondsDelayOnResponse) throws ClientProtocolException, IOException { private void mockWebhookHttpClient(int millisecondsDelayOnResponse) throws ClientProtocolException, IOException {
CDRLoggerWebhook cdrLoggerWebhook = (CDRLoggerWebhook) cdr.getLoggers().stream() CDRLoggerWebhook cdrLoggerWebhook = (CDRLoggerWebhook) cdr.getLoggers().stream()
.filter(logger -> logger instanceof CDRLoggerWebhook).findFirst().get(); .filter(logger -> logger instanceof CDRLoggerWebhook).findFirst().get();
this.webhook = Whitebox.getInternalState(cdrLoggerWebhook, "webhookSender");
try {
this.webhook = Whitebox.getInternalState(cdrLoggerWebhook, "webhookSender");
} catch (Exception e) {
Assert.fail("Error getting private property from stubbed object: " + e.getMessage());
}
CloseableHttpResponse httpResponse = mock(CloseableHttpResponse.class); CloseableHttpResponse httpResponse = mock(CloseableHttpResponse.class);
StatusLine statusLine = mock(StatusLine.class); StatusLine statusLine = mock(StatusLine.class);
@ -100,7 +105,13 @@ public class WebhookIntegrationTest {
} }
private void setHttpClientDelay(int millisecondsDelayOnResponse) throws ClientProtocolException, IOException { private void setHttpClientDelay(int millisecondsDelayOnResponse) throws ClientProtocolException, IOException {
HttpClient httpClient = PowerMockito.spy((HttpClient) Whitebox.getInternalState(webhook, "httpClient")); HttpClient httpClient = null;
try {
httpClient = Whitebox.getInternalState(webhook, "httpClient");
} catch (Exception e) {
Assert.fail("Error getting private property from stubbed object: " + e.getMessage());
}
httpClient = PowerMockito.spy(httpClient);
doAnswer(invocationOnMock -> { doAnswer(invocationOnMock -> {
Thread.sleep(millisecondsDelayOnResponse); Thread.sleep(millisecondsDelayOnResponse);
return invocationOnMock.callRealMethod(); return invocationOnMock.callRealMethod();

View File

@ -9,6 +9,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import org.junit.Assert;
import org.kurento.client.Continuation; import org.kurento.client.Continuation;
import org.kurento.client.KurentoClient; import org.kurento.client.KurentoClient;
import org.kurento.client.MediaPipeline; import org.kurento.client.MediaPipeline;
@ -26,6 +27,7 @@ import io.openvidu.server.kurento.kms.FixedOneKmsManager;
import io.openvidu.server.kurento.kms.Kms; import io.openvidu.server.kurento.kms.Kms;
import io.openvidu.server.kurento.kms.KmsManager; import io.openvidu.server.kurento.kms.KmsManager;
import io.openvidu.server.kurento.kms.KmsProperties; import io.openvidu.server.kurento.kms.KmsProperties;
import io.openvidu.server.kurento.kms.LoadManager;
/** /**
* KmsManager bean mock * KmsManager bean mock
@ -44,10 +46,17 @@ public class IntegrationTestConfiguration {
try { try {
kmsProperties = invocation.getArgument(0); kmsProperties = invocation.getArgument(0);
} catch (Exception e) { } catch (Exception e) {
System.err.println("Error getting argument from stubbed method: " + e.getMessage()); Assert.fail("Error getting argument from stubbed method: " + e.getMessage());
} }
for (KmsProperties kmsProp : kmsProperties) { for (KmsProperties kmsProp : kmsProperties) {
Kms kms = new Kms(kmsProp, Whitebox.getInternalState(spy, "loadManager"), spy);
LoadManager loadManager = null;
try {
loadManager = Whitebox.getInternalState(spy, "loadManager");
} catch (Exception e) {
System.err.println("Error getting private property from stubbed object: " + e.getMessage());
}
Kms kms = new Kms(kmsProp, loadManager, spy);
KurentoClient kClient = mock(KurentoClient.class); KurentoClient kClient = mock(KurentoClient.class);
doAnswer(i -> { doAnswer(i -> {