Skip to content

Commit 35af15d

Browse files
authored
Merge pull request #342 from Resgrid/develop
RE1-T115 More paddle fixes
2 parents 44f8514 + fffa946 commit 35af15d

8 files changed

Lines changed: 291 additions & 124 deletions

File tree

Core/Resgrid.Config/PaymentProviderConfig.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
using System;
2+
using System.Text.RegularExpressions;
23

34
namespace Resgrid.Config
45
{
56
public static class PaymentProviderConfig
67
{
8+
private static readonly Regex PaddleClientTokenRegex = new Regex("^(test|live)_[a-zA-Z0-9]{27}$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
9+
710
#if DEBUG
811
public static bool IsTestMode = true;
912
#else
@@ -139,17 +142,34 @@ public static string GetPaddlePTT10UserAddonPackageId()
139142
public static string GetPaddleEnvironment()
140143
{
141144
if (IsTestMode)
142-
return PaddleTestEnvironment;
145+
return NormalizeConfigValue(PaddleTestEnvironment).ToLowerInvariant();
143146
else
144-
return PaddleProductionEnvironment;
147+
return NormalizeConfigValue(PaddleProductionEnvironment).ToLowerInvariant();
145148
}
146149

147150
public static string GetPaddleClientToken()
148151
{
149152
if (IsTestMode)
150-
return PaddleTestClientToken;
153+
return NormalizeConfigValue(PaddleTestClientToken);
151154
else
152-
return PaddleProductionClientToken;
155+
return NormalizeConfigValue(PaddleProductionClientToken);
156+
}
157+
158+
public static bool IsValidPaddleEnvironment(string environment)
159+
{
160+
var normalizedEnvironment = NormalizeConfigValue(environment).ToLowerInvariant();
161+
return normalizedEnvironment == "sandbox" || normalizedEnvironment == "production";
162+
}
163+
164+
public static bool IsValidPaddleClientToken(string token)
165+
{
166+
var normalizedToken = NormalizeConfigValue(token);
167+
return !string.IsNullOrWhiteSpace(normalizedToken) && PaddleClientTokenRegex.IsMatch(normalizedToken);
168+
}
169+
170+
private static string NormalizeConfigValue(string value)
171+
{
172+
return string.IsNullOrWhiteSpace(value) ? string.Empty : value.Trim();
153173
}
154174
}
155175
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
using FluentAssertions;
2+
using NUnit.Framework;
3+
using Resgrid.Config;
4+
5+
namespace Resgrid.Tests.Config
6+
{
7+
[TestFixture]
8+
public class PaymentProviderConfigTests
9+
{
10+
[Test]
11+
public void should_trim_and_normalize_paddle_environment()
12+
{
13+
var originalIsTestMode = PaymentProviderConfig.IsTestMode;
14+
var originalProductionEnvironment = PaymentProviderConfig.PaddleProductionEnvironment;
15+
16+
try
17+
{
18+
PaymentProviderConfig.IsTestMode = false;
19+
PaymentProviderConfig.PaddleProductionEnvironment = " Production ";
20+
21+
PaymentProviderConfig.GetPaddleEnvironment().Should().Be("production");
22+
PaymentProviderConfig.IsValidPaddleEnvironment(" sandbox ").Should().BeTrue();
23+
PaymentProviderConfig.IsValidPaddleEnvironment("invalid").Should().BeFalse();
24+
}
25+
finally
26+
{
27+
PaymentProviderConfig.IsTestMode = originalIsTestMode;
28+
PaymentProviderConfig.PaddleProductionEnvironment = originalProductionEnvironment;
29+
}
30+
}
31+
32+
[Test]
33+
public void should_trim_paddle_client_token()
34+
{
35+
var originalIsTestMode = PaymentProviderConfig.IsTestMode;
36+
var originalProductionClientToken = PaymentProviderConfig.PaddleProductionClientToken;
37+
38+
try
39+
{
40+
PaymentProviderConfig.IsTestMode = false;
41+
PaymentProviderConfig.PaddleProductionClientToken = " live_7d279f61a3499fed520f7cd8c08 ";
42+
43+
PaymentProviderConfig.GetPaddleClientToken().Should().Be("live_7d279f61a3499fed520f7cd8c08");
44+
}
45+
finally
46+
{
47+
PaymentProviderConfig.IsTestMode = originalIsTestMode;
48+
PaymentProviderConfig.PaddleProductionClientToken = originalProductionClientToken;
49+
}
50+
}
51+
52+
[TestCase("live_7d279f61a3499fed520f7cd8c08", true)]
53+
[TestCase("test_4s7gd50ap72ms92nnsa20ma61lt", true)]
54+
[TestCase(" paddletoken_live_1940dc25e601d953fce733eeddfAty ", false)]
55+
[TestCase("live_7d279f61a3499fed520f7cd8c08/", false)]
56+
[TestCase("", false)]
57+
public void should_validate_documented_paddle_client_token_format(string token, bool expectedResult)
58+
{
59+
PaymentProviderConfig.IsValidPaddleClientToken(token).Should().Be(expectedResult);
60+
}
61+
}
62+
}

0 commit comments

Comments
 (0)