Assert LazyConnectionDataSourceProxy.setDefaultTransactionIsolation() values

See gh-30851
This commit is contained in:
Sam Brannen
2023-07-31 14:03:45 +03:00
parent c43d2e2edc
commit 48eb477755
2 changed files with 16 additions and 7 deletions

View File

@@ -163,6 +163,8 @@ public class LazyConnectionDataSourceProxy extends DelegatingDataSource {
* @see java.sql.Connection#setTransactionIsolation
*/
public void setDefaultTransactionIsolation(int defaultTransactionIsolation) {
Assert.isTrue(constants.containsValue(defaultTransactionIsolation),
"Only values of transaction isolation constants allowed");
this.defaultTransactionIsolation = defaultTransactionIsolation;
}

View File

@@ -29,6 +29,9 @@ import org.springframework.util.ReflectionUtils;
import static java.sql.Connection.TRANSACTION_NONE;
import static java.sql.Connection.TRANSACTION_READ_COMMITTED;
import static java.sql.Connection.TRANSACTION_READ_UNCOMMITTED;
import static java.sql.Connection.TRANSACTION_REPEATABLE_READ;
import static java.sql.Connection.TRANSACTION_SERIALIZABLE;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
@@ -75,16 +78,20 @@ class LazyConnectionDataSourceProxyTests {
@Test
void setDefaultTransactionIsolation() {
// unsupported values are not checked:
proxy.setDefaultTransactionIsolation(-999);
assertThat(proxy.defaultTransactionIsolation()).isEqualTo(-999);
// TRANSACTION_NONE should not be supported, but we currently do not check that.
proxy.setDefaultTransactionIsolation(TRANSACTION_NONE);
assertThat(proxy.defaultTransactionIsolation()).isEqualTo(TRANSACTION_NONE);
assertThatIllegalArgumentException().isThrownBy(() -> proxy.setDefaultTransactionIsolation(-999));
assertThatIllegalArgumentException().isThrownBy(() -> proxy.setDefaultTransactionIsolation(TRANSACTION_NONE));
proxy.setDefaultTransactionIsolation(TRANSACTION_READ_COMMITTED);
assertThat(proxy.defaultTransactionIsolation()).isEqualTo(TRANSACTION_READ_COMMITTED);
proxy.setDefaultTransactionIsolation(TRANSACTION_READ_UNCOMMITTED);
assertThat(proxy.defaultTransactionIsolation()).isEqualTo(TRANSACTION_READ_UNCOMMITTED);
proxy.setDefaultTransactionIsolation(TRANSACTION_REPEATABLE_READ);
assertThat(proxy.defaultTransactionIsolation()).isEqualTo(TRANSACTION_REPEATABLE_READ);
proxy.setDefaultTransactionIsolation(TRANSACTION_SERIALIZABLE);
assertThat(proxy.defaultTransactionIsolation()).isEqualTo(TRANSACTION_SERIALIZABLE);
}