Skip to content

Commit 80a5019

Browse files
committed
Verify read-only propagation in DataSourceTransactionManagerTests
See gh-23747
1 parent 03bd02a commit 80a5019

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

spring-jdbc/src/test/java/org/springframework/jdbc/datasource/DataSourceTransactionManagerTests.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,7 @@ protected void doInTransactionWithoutResult(TransactionStatus status) throws Run
858858
public void testTransactionWithIsolationAndReadOnly() throws Exception {
859859
given(con.getTransactionIsolation()).willReturn(Connection.TRANSACTION_READ_COMMITTED);
860860
given(con.getAutoCommit()).willReturn(true);
861+
given(con.isReadOnly()).willReturn(true);
861862

862863
TransactionTemplate tt = new TransactionTemplate(tm);
863864
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
@@ -875,11 +876,13 @@ protected void doInTransactionWithoutResult(TransactionStatus status) {
875876

876877
assertTrue("Hasn't thread connection", !TransactionSynchronizationManager.hasResource(ds));
877878
InOrder ordered = inOrder(con);
879+
ordered.verify(con).setReadOnly(true);
878880
ordered.verify(con).setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
879881
ordered.verify(con).setAutoCommit(false);
880882
ordered.verify(con).commit();
881883
ordered.verify(con).setAutoCommit(true);
882884
ordered.verify(con).setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
885+
ordered.verify(con).setReadOnly(false);
883886
verify(con).close();
884887
}
885888

@@ -890,6 +893,7 @@ public void testTransactionWithEnforceReadOnly() throws Exception {
890893
given(con.getAutoCommit()).willReturn(true);
891894
Statement stmt = mock(Statement.class);
892895
given(con.createStatement()).willReturn(stmt);
896+
given(con.isReadOnly()).willReturn(true);
893897

894898
TransactionTemplate tt = new TransactionTemplate(tm);
895899
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
@@ -906,11 +910,13 @@ protected void doInTransactionWithoutResult(TransactionStatus status) {
906910

907911
assertTrue("Hasn't thread connection", !TransactionSynchronizationManager.hasResource(ds));
908912
InOrder ordered = inOrder(con, stmt);
913+
ordered.verify(con).setReadOnly(true);
909914
ordered.verify(con).setAutoCommit(false);
910915
ordered.verify(stmt).executeUpdate("SET TRANSACTION READ ONLY");
911916
ordered.verify(stmt).close();
912917
ordered.verify(con).commit();
913918
ordered.verify(con).setAutoCommit(true);
919+
ordered.verify(con).setReadOnly(false);
914920
ordered.verify(con).close();
915921
}
916922

0 commit comments

Comments
 (0)