Skip to content

Commit bd2acc8

Browse files
Add tests
1 parent d1f254e commit bd2acc8

File tree

2 files changed

+64
-2
lines changed

2 files changed

+64
-2
lines changed

Snowflake.Data.Tests/Mock/MockRestSessionExpired.cs

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class MockRestSessionExpired : IMockRestRequester
1616
{
1717
static private readonly String EXPIRED_SESSION_TOKEN="session_expired_token";
1818

19+
static private readonly String NEW_SESSION_TOKEN="new_session_token";
20+
1921
static private readonly String TOKEN_FMT = "Snowflake Token=\"{0}\"";
2022

2123
static private readonly int SESSION_EXPIRED_CODE = 390112;
@@ -58,7 +60,7 @@ public Task<T> PostAsync<T>(IRestRequest request, CancellationToken cancellation
5860
};
5961
return Task.FromResult<T>((T)(object)queryExecResponse);
6062
}
61-
else if (sfRequest.authorizationToken.Equals(String.Format(TOKEN_FMT, "new_session_token")))
63+
else if (sfRequest.authorizationToken.Equals(String.Format(TOKEN_FMT, NEW_SESSION_TOKEN)))
6264
{
6365
SecondTimeRequestID = ExtractRequestID(sfRequest.Url.Query);
6466
QueryExecResponse queryExecResponse = new QueryExecResponse
@@ -97,7 +99,7 @@ public Task<T> PostAsync<T>(IRestRequest request, CancellationToken cancellation
9799
success = true,
98100
data = new RenewSessionResponseData()
99101
{
100-
sessionToken = "new_session_token",
102+
sessionToken = NEW_SESSION_TOKEN,
101103
masterToken = "new_master_token"
102104
}
103105
});
@@ -120,6 +122,37 @@ public T Get<T>(IRestRequest request)
120122

121123
public Task<T> GetAsync<T>(IRestRequest request, CancellationToken cancellationToken)
122124
{
125+
SFRestRequest sfRequest = (SFRestRequest)request;
126+
if (sfRequest.authorizationToken.Equals(String.Format(TOKEN_FMT, EXPIRED_SESSION_TOKEN)))
127+
{
128+
QueryExecResponse queryExecResponse = new QueryExecResponse
129+
{
130+
success = false,
131+
code = SESSION_EXPIRED_CODE
132+
};
133+
return Task.FromResult<T>((T)(object)queryExecResponse);
134+
}
135+
if (sfRequest.authorizationToken.Equals(String.Format(TOKEN_FMT, NEW_SESSION_TOKEN)))
136+
{
137+
QueryExecResponse queryExecResponse = new QueryExecResponse
138+
{
139+
success = true,
140+
data = new QueryExecResponseData
141+
{
142+
rowSet = new string[,] { { "abc" } },
143+
rowType = new List<ExecResponseRowType>()
144+
{
145+
new ExecResponseRowType
146+
{
147+
name = "colOne",
148+
type = SFDataType.TEXT.ToString()
149+
}
150+
},
151+
parameters = new List<NameValueParameter>()
152+
}
153+
};
154+
return Task.FromResult<T>((T)(object)queryExecResponse);
155+
}
123156
return Task.FromResult<T>((T)(object)null);
124157
}
125158

Snowflake.Data.Tests/UnitTests/SFStatementTest.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Snowflake.Data.Core;
88
using NUnit.Framework;
99
using System;
10+
using System.Threading.Tasks;
1011

1112
namespace Snowflake.Data.Tests.UnitTests
1213
{
@@ -32,6 +33,34 @@ public void TestSessionRenew()
3233
Assert.AreEqual(restRequester.FirstTimeRequestID, restRequester.SecondTimeRequestID);
3334
}
3435

36+
[Test]
37+
public void TestSessionRenewGetResultWithId()
38+
{
39+
Mock.MockRestSessionExpired restRequester = new Mock.MockRestSessionExpired();
40+
SFSession sfSession = new SFSession("account=test;user=test;password=test", null, restRequester);
41+
sfSession.Open();
42+
SFStatement statement = new SFStatement(sfSession);
43+
SFBaseResultSet resultSet = statement.GetResultWithId("mockId");
44+
Assert.AreEqual(true, resultSet.Next());
45+
Assert.AreEqual("abc", resultSet.GetString(0));
46+
Assert.AreEqual("new_session_token", sfSession.sessionToken);
47+
Assert.AreEqual("new_master_token", sfSession.masterToken);
48+
}
49+
50+
[Test]
51+
public async Task TestSessionRenewGetResultWithIdAsync()
52+
{
53+
Mock.MockRestSessionExpired restRequester = new Mock.MockRestSessionExpired();
54+
SFSession sfSession = new SFSession("account=test;user=test;password=test", null, restRequester);
55+
sfSession.Open();
56+
SFStatement statement = new SFStatement(sfSession);
57+
SFBaseResultSet resultSet = await statement.GetResultWithIdAsync("mockId", CancellationToken.None);
58+
Assert.AreEqual(true, resultSet.Next());
59+
Assert.AreEqual("abc", resultSet.GetString(0));
60+
Assert.AreEqual("new_session_token", sfSession.sessionToken);
61+
Assert.AreEqual("new_master_token", sfSession.masterToken);
62+
}
63+
3564
// Mock test for session renew during query execution
3665
[Test]
3766
public void TestSessionRenewDuringQueryExec()

0 commit comments

Comments
 (0)