64 lines
1.9 KiB
Java
64 lines
1.9 KiB
Java
package com.cloudhandson.vpdbackoffice.service;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
import com.cloudhandson.vpdbackoffice.domain.probe.ProbeStatus;
|
|
import java.net.ConnectException;
|
|
import java.net.SocketTimeoutException;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.web.client.ResourceAccessException;
|
|
|
|
class ProbeErrorClassifierTest {
|
|
|
|
private final ProbeErrorClassifier classifier = new ProbeErrorClassifier();
|
|
|
|
@Test
|
|
void classifiesInvalidBearerKey() {
|
|
assertThat(classifier.classify(HttpStatus.FORBIDDEN, "{\"error\":\"ORA-20002\"}"))
|
|
.isEqualTo(ProbeStatus.INVALID_TOKEN);
|
|
}
|
|
|
|
@Test
|
|
void classifiesObjectAccessFailure() {
|
|
assertThat(classifier.classify(HttpStatus.FORBIDDEN, "ORA-00942: table or view does not exist"))
|
|
.isEqualTo(ProbeStatus.OBJECT_NOT_ACCESSIBLE);
|
|
}
|
|
|
|
@Test
|
|
void classifiesHttpUnauthorizedAsInvalidToken() {
|
|
assertThat(classifier.classify(HttpStatus.UNAUTHORIZED, "unauthorized"))
|
|
.isEqualTo(ProbeStatus.INVALID_TOKEN);
|
|
}
|
|
|
|
@Test
|
|
void classifiesOrdsNotFound() {
|
|
assertThat(classifier.classify(HttpStatus.NOT_FOUND, "{\"code\":\"NotFound\"}"))
|
|
.isEqualTo(ProbeStatus.ORDS_PATH_NOT_FOUND);
|
|
}
|
|
|
|
@Test
|
|
void classifiesBrokenVpdPolicyFunction() {
|
|
assertThat(classifier.classify(
|
|
HttpStatus.INTERNAL_SERVER_ERROR,
|
|
"SQL Error Code 28110, Error Message: ORA-28110: The VPD policy function has error"
|
|
)).isEqualTo(ProbeStatus.VPD_FILTER_ERROR);
|
|
}
|
|
|
|
@Test
|
|
void detectsOrdsConnectionRefused() {
|
|
assertThat(classifier.isUnavailable(new ResourceAccessException(
|
|
"I/O error",
|
|
new ConnectException("Connection refused")
|
|
))).isTrue();
|
|
}
|
|
|
|
@Test
|
|
void detectsOrdsTimeout() {
|
|
assertThat(classifier.isTimeout(new ResourceAccessException(
|
|
"I/O error",
|
|
new SocketTimeoutException("Read timed out")
|
|
))).isTrue();
|
|
}
|
|
}
|