33using Snowflake . Data . Core ;
44using NUnit . Framework ;
55using System ;
6+ using System . Threading . Tasks ;
67using Snowflake . Data . Core . Session ;
78
89namespace Snowflake . Data . Tests . UnitTests
@@ -29,6 +30,56 @@ public void TestSessionRenew()
2930 Assert . AreEqual ( restRequester . FirstTimeRequestID , restRequester . SecondTimeRequestID ) ;
3031 }
3132
33+ [ Test ]
34+ public void TestSessionRenewGetResultWithId ( )
35+ {
36+ Mock . MockRestSessionExpired restRequester = new Mock . MockRestSessionExpired ( ) ;
37+ SFSession sfSession = new SFSession ( "account=test;user=test;password=test" , new SessionPropertiesContext ( ) , restRequester ) ;
38+ sfSession . Open ( ) ;
39+ SFStatement statement = new SFStatement ( sfSession ) ;
40+ SFBaseResultSet resultSet = statement . GetResultWithId ( "mockId" ) ;
41+ Assert . AreEqual ( true , resultSet . Next ( ) ) ;
42+ Assert . AreEqual ( "abc" , resultSet . GetString ( 0 ) ) ;
43+ Assert . AreEqual ( "new_session_token" , sfSession . sessionToken ) ;
44+ Assert . AreEqual ( "new_master_token" , sfSession . masterToken ) ;
45+ }
46+
47+ [ Test ]
48+ public void TestSessionRenewGetResultWithIdOnlyRetries3Times ( )
49+ {
50+ Mock . MockRestSessionExpired restRequester = new Mock . MockRestSessionExpired ( ) ;
51+ SFSession sfSession = new SFSession ( "account=test;user=test;password=test" , new SessionPropertiesContext ( ) , restRequester ) ;
52+ sfSession . Open ( ) ;
53+ SFStatement statement = new SFStatement ( sfSession ) ;
54+ var thrown = Assert . Throws < SnowflakeDbException > ( ( ) => statement . GetResultWithId ( "retryId" ) ) ;
55+ Assert . AreEqual ( thrown . ErrorCode , Mock . MockRestSessionExpired . SESSION_EXPIRED_CODE ) ;
56+ }
57+
58+ [ Test ]
59+ public async Task TestSessionRenewGetResultWithIdAsync ( )
60+ {
61+ Mock . MockRestSessionExpired restRequester = new Mock . MockRestSessionExpired ( ) ;
62+ SFSession sfSession = new SFSession ( "account=test;user=test;password=test" , new SessionPropertiesContext ( ) , restRequester ) ;
63+ await sfSession . OpenAsync ( CancellationToken . None ) ;
64+ SFStatement statement = new SFStatement ( sfSession ) ;
65+ SFBaseResultSet resultSet = await statement . GetResultWithIdAsync ( "mockId" , CancellationToken . None ) ;
66+ Assert . AreEqual ( true , resultSet . Next ( ) ) ;
67+ Assert . AreEqual ( "abc" , resultSet . GetString ( 0 ) ) ;
68+ Assert . AreEqual ( "new_session_token" , sfSession . sessionToken ) ;
69+ Assert . AreEqual ( "new_master_token" , sfSession . masterToken ) ;
70+ }
71+
72+ [ Test ]
73+ public async Task TestSessionRenewGetResultWithIdOnlyRetries3TimesAsync ( )
74+ {
75+ Mock . MockRestSessionExpired restRequester = new Mock . MockRestSessionExpired ( ) ;
76+ SFSession sfSession = new SFSession ( "account=test;user=test;password=test" , new SessionPropertiesContext ( ) , restRequester ) ;
77+ await sfSession . OpenAsync ( CancellationToken . None ) ;
78+ SFStatement statement = new SFStatement ( sfSession ) ;
79+ var thrown = Assert . ThrowsAsync < SnowflakeDbException > ( async ( ) => await statement . GetResultWithIdAsync ( "retryId" , CancellationToken . None ) ) ;
80+ Assert . AreEqual ( thrown . ErrorCode , Mock . MockRestSessionExpired . SESSION_EXPIRED_CODE ) ;
81+ }
82+
3283 // Mock test for session renew during query execution
3384 [ Test ]
3485 public void TestSessionRenewDuringQueryExec ( )
0 commit comments