Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SNOW-961434 Fix usage of insecure mode in connection parameters #832

Merged
merged 2 commits into from
Dec 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ namespace Snowflake.Data.Tests.UnitTests.Session
public class SFHttpClientPropertiesTest
{
[Test]
public void ShouldConvertToMapOnly2Properties(
public void TestConvertToMapOnly2Properties(
[Values(true, false)] bool validateDefaultParameters,
[Values(true, false)] bool clientSessionKeepAlive)
{
// given
// arrange
var proxyProperties = new SFSessionHttpClientProxyProperties()
{
proxyHost = "localhost",
Expand All @@ -41,19 +41,52 @@ public void ShouldConvertToMapOnly2Properties(
proxyProperties = proxyProperties
};

// when
// act
var parameterMap = properties.ToParameterMap();

// then
// assert
Assert.AreEqual(2, parameterMap.Count);
Assert.AreEqual(validateDefaultParameters, parameterMap[SFSessionParameter.CLIENT_VALIDATE_DEFAULT_PARAMETERS]);
Assert.AreEqual(clientSessionKeepAlive, parameterMap[SFSessionParameter.CLIENT_SESSION_KEEP_ALIVE]);
}

[Test]
public void ShouldBuildHttpClientConfig()
public void TestBuildHttpClientConfig()
{
// arrange
var properties = RandomSFSessionHttpClientProperties();

// act
var config = properties.BuildHttpClientConfig();

// assert
Assert.AreEqual(!properties.insecureMode, config.CrlCheckEnabled);
Assert.AreEqual(properties.proxyProperties.proxyHost, config.ProxyHost);
Assert.AreEqual(properties.proxyProperties.proxyPort, config.ProxyPort);
Assert.AreEqual(properties.proxyProperties.proxyUser, config.ProxyUser);
Assert.AreEqual(properties.proxyProperties.proxyPassword, config.ProxyPassword);
Assert.AreEqual(properties.proxyProperties.nonProxyHosts, config.NoProxyList);
Assert.AreEqual(properties.disableRetry, config.DisableRetry);
Assert.AreEqual(properties.forceRetryOn404, config.ForceRetryOn404);
Assert.AreEqual(properties.maxHttpRetries, config.MaxHttpRetries);
}

[Test]
public void TestCrlCheckEnabledToBeOppositeInsecureMode([Values] bool insecureMode)
{
// arrange
var properties = RandomSFSessionHttpClientProperties();
properties.insecureMode = insecureMode;

// act
var config = properties.BuildHttpClientConfig();

// assert
Assert.AreEqual(!insecureMode, config.CrlCheckEnabled);
}

private SFSessionHttpClientProperties RandomSFSessionHttpClientProperties()
{
// given
var proxyProperties = new SFSessionHttpClientProxyProperties()
{
proxyHost = TestDataGenarator.NextAlphaNumeric(),
Expand All @@ -62,7 +95,7 @@ public void ShouldBuildHttpClientConfig()
proxyPassword = TestDataGenarator.NextAlphaNumeric(),
proxyUser = TestDataGenarator.NextAlphaNumeric()
};
var properties = new SFSessionHttpClientProperties()
return new SFSessionHttpClientProperties()
{
validateDefaultParameters = TestDataGenarator.NextBool(),
clientSessionKeepAlive = TestDataGenarator.NextBool(),
Expand All @@ -74,26 +107,12 @@ public void ShouldBuildHttpClientConfig()
maxHttpRetries = TestDataGenarator.NextInt(0, 15),
proxyProperties = proxyProperties
};

// when
var config = properties.BuildHttpClientConfig();

// then
Assert.AreEqual(properties.insecureMode, config.CrlCheckEnabled);
Assert.AreEqual(properties.proxyProperties.proxyHost, config.ProxyHost);
Assert.AreEqual(properties.proxyProperties.proxyPort, config.ProxyPort);
Assert.AreEqual(properties.proxyProperties.proxyUser, config.ProxyUser);
Assert.AreEqual(properties.proxyProperties.proxyPassword, config.ProxyPassword);
Assert.AreEqual(properties.proxyProperties.nonProxyHosts, config.NoProxyList);
Assert.AreEqual(properties.disableRetry, config.DisableRetry);
Assert.AreEqual(properties.forceRetryOn404, config.ForceRetryOn404);
Assert.AreEqual(properties.maxHttpRetries, config.MaxHttpRetries);
}

[Test, TestCaseSource(nameof(PropertiesProvider))]
public void ShouldExtractProperties(PropertiesTestCase testCase)
public void TestExtractProperties(PropertiesTestCase testCase)
{
// given
// arrange
var proxyExtractorMock = new Moq.Mock<SFSessionHttpClientProxyProperties.IExtractor>();
var extractor = new SFSessionHttpClientProperties.Extractor(proxyExtractorMock.Object);
var properties = SFSessionProperties.parseConnectionString(testCase.conectionString, null);
Expand All @@ -102,11 +121,11 @@ public void ShouldExtractProperties(PropertiesTestCase testCase)
.Setup(e => e.ExtractProperties(properties))
.Returns(proxyProperties);

// when
// act
var extractedProperties = extractor.ExtractProperties(properties);
extractedProperties.CheckPropertiesAreValid();

// then
// assert
Assert.AreEqual(testCase.expectedProperties.validateDefaultParameters, extractedProperties.validateDefaultParameters);
Assert.AreEqual(testCase.expectedProperties.clientSessionKeepAlive, extractedProperties.clientSessionKeepAlive);
Assert.AreEqual(testCase.expectedProperties.timeoutInSec, extractedProperties.timeoutInSec);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ internal TimeSpan TimeoutDuration()
internal HttpClientConfig BuildHttpClientConfig()
{
return new HttpClientConfig(
insecureMode,
!insecureMode,
sfc-gh-knozderko marked this conversation as resolved.
Show resolved Hide resolved
proxyProperties.proxyHost,
proxyProperties.proxyPort,
proxyProperties.proxyUser,
Expand Down
Loading