Skip to content

Commit d870a57

Browse files
committed
C#: Add DependabotProxy unit-tests.
1 parent 0e350d0 commit d870a57

1 file changed

Lines changed: 185 additions & 0 deletions

File tree

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
using Xunit;
2+
using System;
3+
using System.IO;
4+
using Semmle.Extraction.CSharp.DependencyFetching;
5+
using Semmle.Util;
6+
7+
namespace Semmle.Extraction.Tests
8+
{
9+
public class DependabotConfigurationStub : IDependabotProxyConfiguration
10+
{
11+
public string? Host { get; set; }
12+
public string? Port { get; set; }
13+
public string? Certificate { get; set; }
14+
public string? RegistryURLs { get; set; }
15+
}
16+
17+
public class DiagnosticsWriterStub : IDiagnosticsWriter
18+
{
19+
public void AddEntry(Semmle.Util.DiagnosticMessage entry) { }
20+
public void Dispose() { }
21+
}
22+
23+
public class DependabotProxyTests
24+
{
25+
private static TemporaryDirectory MakeTemporaryDirectory()
26+
{
27+
var tmp = Path.Join(Path.GetTempPath(), "DependabotProxyTests", Guid.NewGuid().ToString());
28+
return new TemporaryDirectory(tmp, "testing", new LoggerStub());
29+
}
30+
31+
[Fact]
32+
public void TestDependabotProxyCreation1()
33+
{
34+
// Setup
35+
var config = new DependabotConfigurationStub
36+
{
37+
Host = "my.private.server",
38+
Port = "",
39+
};
40+
41+
// Execute
42+
using var tempWorkingDirectory = MakeTemporaryDirectory();
43+
using var proxy = DependabotProxy.MakeAux(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory);
44+
45+
// Verify
46+
Assert.Null(proxy);
47+
}
48+
49+
[Fact]
50+
public void TestDependabotProxyCreation2()
51+
{
52+
// Setup
53+
var config = new DependabotConfigurationStub
54+
{
55+
Port = "8080",
56+
};
57+
58+
// Execute
59+
using var tempWorkingDirectory = MakeTemporaryDirectory();
60+
using var proxy = DependabotProxy.MakeAux(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory);
61+
62+
// Verify
63+
Assert.Null(proxy);
64+
}
65+
66+
private const string ExampleCertificate = """
67+
-----BEGIN CERTIFICATE-----
68+
MIIFJTCCAw2gAwIBAgIUDImU6YnuAqJ1QuRp+OpJQPnPu6wwDQYJKoZIhvcNAQEL
69+
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDkwMTEyMjUzMVoXDTI3MDkw
70+
MTEyMjUzMVowFDESMBAGA1UEAwwJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEF
71+
AAOCAg8AMIICCgKCAgEAnlp7yQ1VuocMwIZWlCle3bEM86+1ED6BFfPFpIrRhfUT
72+
c+5IvPng8TIZPO4mROp5G9YDZfOtXW2bwktyZNUhsBcxqUT1lmXit21vc5W9Gxx5
73+
4G8nyF4/FcjFkmxkZifxiUCdBceDcE7+kx2itq/a7gLPlyTzvz5etu1nHEC3Jg/y
74+
TVhAwdwysgAo9WymFCczDa2ga6nOPBOaxwLnoPl9041KSu5oIo9QC0Im+US1R18Q
75+
/mXa+wkmjf+bYAkE/pZie8z8Q7h9yppTngGzkoDEebFYyaMr8MXlFdWS8f/eMwSp
76+
iMFSsmlCqgUbA672APxzOcuSMMYrblzGkvZp23qbNjwQuQKlgAYBTSGltLv4U8JF
77+
ePNcgDCY6RG55rNvF1gk1L2h25jcw1LX6fSvQGCOkzNmP03AhqZBUigO1Zt0zLwi
78+
K4m0bH7nPLJFEN6tI3tybyZeC2RVyiSHvOkgx35Qj8RQ3XMVkImJNBYOMc2MkmMZ
79+
ux6XMiHqXCON4zaWuWSovciZeMAQAspCrzVDLH6p2DWEfw/zDfQNU3iLk21sZGei
80+
0GKzs8zrxUcqOU9V4Cnm+7JJ6eqS72f1+wX0ROb3djC6KgCE/NaHqo4apiI3K+CH
81+
T0rVRsJIHyT39YO1c1I1vhAKRSH5kQVe3qRfIT/AuaDLQY6WqGPzrOkem78sjtsC
82+
AwEAAaNvMG0wHQYDVR0OBBYEFK0DP5MD6mhEcdcm346uwoPL2NFGMB8GA1UdIwQY
83+
MBaAFK0DP5MD6mhEcdcm346uwoPL2NFGMA8GA1UdEwEB/wQFMAMBAf8wGgYDVR0R
84+
BBMwEYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEBCwUAA4ICAQCc5u8qNHHG
85+
kONjfvq7Denq6QaEt4dZZDDODAvgUzZnnBjEhgrp7zfxtbyU/I0+DWnKQMKA9wPM
86+
ktiFGd0lldEqoT+E7b0kN124lBGqZ/uYkhsWZ0Nc5dD+UB9oJszwOc5KNuquOnr6
87+
SbsfXVm4yLvVLXl67c0jvqvRgGg9/6Q6eMzohW6abMdbYhS28/DsJhCea/dV3+L1
88+
oVJ3O/A8e86m174ZCGE8s9UtnVYylBkAryDqaaQLdOBQ2C7uxdRAUNHSIa2JlqUc
89+
5+cod8lFojKb74hbgj6wkXyajsFttqYMh7CeASsnjZXDQ4MC3DqqDVCZuNvJ85Rt
90+
ya3Tljp4Ln2AAAoKC3REUeU8PQqpk1vVIj0FSr3RvBTvwzyNfWFVqyBiXTATuV9n
91+
6AemqqXo5MZrHHeRaSTF8A70Jxbt9yx75xQxp3O3tdEL1Mxbl9X7c/hizOfLbeHH
92+
IkAgzALQgi87Zbf2tOhRwH5NrB4ijyUUfovRHUwzsZOoTNqlVeNzbDRVbegx9V99
93+
/3vwNZgpStGl/JYhN9qY5hJKnC64ltMvuNGpLeJCGyFkrtFS8gKkgR7VKrGo7h3+
94+
Zo8rz8TFjP7RmSgQbrmFuPqNOGXzPidu2sMMFacKV7Rn4bEtHzW3MDhqVD4w/pGD
95+
L0xpnWjzLYltVjz8mo07yh+zQ10G71Cl1w==
96+
-----END CERTIFICATE-----
97+
""";
98+
99+
[Fact]
100+
public void TestDependabotProxyCertificate()
101+
{
102+
// Setup
103+
var config = new DependabotConfigurationStub
104+
{
105+
Port = "8080",
106+
Host = "my.private.server",
107+
Certificate = ExampleCertificate
108+
};
109+
110+
// Execute
111+
using var tempWorkingDirectory = MakeTemporaryDirectory();
112+
using var proxy = DependabotProxy.MakeAux(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory);
113+
114+
// Verify
115+
Assert.NotNull(proxy);
116+
Assert.Equal("http://my.private.server:8080", proxy.Address);
117+
Assert.NotNull(proxy.Certificate);
118+
Assert.NotNull(proxy.CertificatePath);
119+
}
120+
121+
[Fact]
122+
public void TestDependabotRegistryUrls1()
123+
{
124+
// Setup
125+
var config = new DependabotConfigurationStub
126+
{
127+
Port = "8080",
128+
Host = "my.private.server",
129+
RegistryURLs = "Doesn't parse as a JSON list"
130+
};
131+
132+
// Execute
133+
using var tempWorkingDirectory = MakeTemporaryDirectory();
134+
using var proxy = DependabotProxy.MakeAux(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory);
135+
136+
// Verify
137+
Assert.NotNull(proxy);
138+
Assert.Equal([], proxy.RegistryURLs);
139+
}
140+
141+
[Fact]
142+
public void TestDependabotRegistryUrls2()
143+
{
144+
// Setup
145+
var config = new DependabotConfigurationStub
146+
{
147+
Port = "8080",
148+
Host = "my.private.server",
149+
RegistryURLs = "[ { \"type\": \"nuget_feed\", \"url\": \"https://nuget.pkg.github.com/org/index.json\" } ]"
150+
};
151+
152+
// Execute
153+
using var tempWorkingDirectory = MakeTemporaryDirectory();
154+
using var proxy = DependabotProxy.MakeAux(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory);
155+
156+
// Verify
157+
Assert.NotNull(proxy);
158+
Assert.Equal([
159+
"https://nuget.pkg.github.com/org/index.json"
160+
], proxy.RegistryURLs);
161+
}
162+
163+
[Fact]
164+
public void TestDependabotRegistryUrls3()
165+
{
166+
// Setup
167+
var config = new DependabotConfigurationStub
168+
{
169+
Port = "8080",
170+
Host = "my.private.server",
171+
RegistryURLs = "[ { \"type\": \"nuget_feed\", \"url\": \"https://example.com/org/index.json\" }, { \"type\": \"wrong_type\", \"url\": \"https://nuget.pkg.github.com/org/index.json\" } ]"
172+
};
173+
174+
// Execute
175+
using var tempWorkingDirectory = MakeTemporaryDirectory();
176+
using var proxy = DependabotProxy.MakeAux(config, new LoggerStub(), new DiagnosticsWriterStub(), tempWorkingDirectory);
177+
178+
// Verify
179+
Assert.NotNull(proxy);
180+
Assert.Equal([
181+
"https://example.com/org/index.json"
182+
], proxy.RegistryURLs);
183+
}
184+
}
185+
}

0 commit comments

Comments
 (0)