36 lines
1.3 KiB
Java
36 lines
1.3 KiB
Java
package com.cloudhandson.vpdbackoffice.service;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
import com.cloudhandson.vpdbackoffice.config.BackofficeProperties;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
class SelectAiServiceTest {
|
|
|
|
private final SelectAiService service = new SelectAiService(
|
|
new BackofficeProperties(null, null, null, null, null),
|
|
token -> new HmmMcpPrincipal(1L, "E1001", 1L),
|
|
new ObjectMapper());
|
|
|
|
@Test
|
|
void acceptsOneReadOnlySelectAndRemovesTrailingSemicolon() {
|
|
assertThat(service.validateReadOnlySql(
|
|
"SELECT employee_code FROM hmm_hr_employees;"))
|
|
.isEqualTo("SELECT employee_code FROM hmm_hr_employees");
|
|
}
|
|
|
|
@Test
|
|
void rejectsDmlPackagesCommentsAndMultipleStatements() {
|
|
assertThatThrownBy(() ->
|
|
service.validateReadOnlySql("SELECT * FROM x; DELETE FROM x"))
|
|
.isInstanceOf(AppException.class);
|
|
assertThatThrownBy(() ->
|
|
service.validateReadOnlySql("SELECT DBMS_LOCK.SLEEP(10) FROM dual"))
|
|
.isInstanceOf(AppException.class);
|
|
assertThatThrownBy(() ->
|
|
service.validateReadOnlySql("SELECT * FROM x -- bypass"))
|
|
.isInstanceOf(AppException.class);
|
|
}
|
|
}
|