@@ -21,6 +21,7 @@ namespace chocolatey.tests.infrastructure.app.nuget
21
21
using System . Linq ;
22
22
using chocolatey . infrastructure . app . configuration ;
23
23
using chocolatey . infrastructure . app . nuget ;
24
+ using chocolatey . infrastructure . filesystem ;
24
25
using Moq ;
25
26
using NuGet . Common ;
26
27
using NuGet . Packaging ;
@@ -35,6 +36,7 @@ private class when_gets_remote_repository : TinySpec
35
36
private Action because ;
36
37
private readonly Mock < ILogger > nugetLogger = new Mock < ILogger > ( ) ;
37
38
private readonly Mock < IPackageDownloader > packageDownloader = new Mock < IPackageDownloader > ( ) ;
39
+ private readonly Mock < IFileSystem > filesystem = new Mock < IFileSystem > ( ) ;
38
40
private ChocolateyConfiguration configuration ;
39
41
private IEnumerable < SourceRepository > packageRepositories ;
40
42
@@ -43,11 +45,17 @@ public override void Context()
43
45
configuration = new ChocolateyConfiguration ( ) ;
44
46
nugetLogger . ResetCalls ( ) ;
45
47
packageDownloader . ResetCalls ( ) ;
48
+ filesystem . ResetCalls ( ) ;
49
+
50
+ filesystem . Setup ( f => f . get_full_path ( It . IsAny < string > ( ) ) ) . Returns ( ( string a ) =>
51
+ {
52
+ return "C:\\ packages\\ " + a ;
53
+ } ) ;
46
54
}
47
55
48
56
public override void Because ( )
49
57
{
50
- because = ( ) => packageRepositories = NugetCommon . GetRemoteRepositories ( configuration , nugetLogger . Object ) ;
58
+ because = ( ) => packageRepositories = NugetCommon . GetRemoteRepositories ( configuration , nugetLogger . Object , filesystem . Object ) ;
51
59
}
52
60
53
61
[ Fact ]
@@ -60,6 +68,99 @@ public void should_create_repository_when_source_is_null()
60
68
61
69
packageRepositories . Count ( ) . ShouldEqual ( 0 ) ;
62
70
}
71
+
72
+ [ Fact ]
73
+ public void should_parse_http_source ( )
74
+ {
75
+ Context ( ) ;
76
+ var source = "http://nexus.example.com:8081/repository/choco" ;
77
+ configuration . Sources = source ;
78
+ configuration . CacheLocation = "C:\\ temp" ;
79
+
80
+ because ( ) ;
81
+
82
+ packageRepositories . First ( ) . PackageSource . TrySourceAsUri . ShouldNotBeNull ( ) ;
83
+ packageRepositories . First ( ) . PackageSource . SourceUri . to_string ( ) . ShouldEqual ( source ) ;
84
+ packageRepositories . First ( ) . PackageSource . IsHttp . ShouldBeTrue ( ) ;
85
+ }
86
+
87
+ [ Fact ]
88
+ public void should_parse_https_source ( )
89
+ {
90
+ Context ( ) ;
91
+ var source = "https://nexus.example.com/repository/choco" ;
92
+ configuration . Sources = source ;
93
+ configuration . CacheLocation = "C:\\ temp" ;
94
+
95
+ because ( ) ;
96
+
97
+ packageRepositories . First ( ) . PackageSource . TrySourceAsUri . ShouldNotBeNull ( ) ;
98
+ packageRepositories . First ( ) . PackageSource . SourceUri . to_string ( ) . ShouldEqual ( source ) ;
99
+ packageRepositories . First ( ) . PackageSource . IsHttps . ShouldBeTrue ( ) ;
100
+ }
101
+
102
+ [ Fact ]
103
+ public void should_parse_absolute_path_source ( )
104
+ {
105
+ Context ( ) ;
106
+ var source = "C:\\ packages" ;
107
+ configuration . Sources = source ;
108
+
109
+ because ( ) ;
110
+
111
+ packageRepositories . First ( ) . PackageSource . TrySourceAsUri . ShouldNotBeNull ( ) ;
112
+ packageRepositories . First ( ) . PackageSource . SourceUri . to_string ( )
113
+ . ShouldEqual ( ( "file:///" + source ) . Replace ( "\\ " , "/" ) ) ;
114
+ packageRepositories . First ( ) . PackageSource . IsLocal . ShouldBeTrue ( ) ;
115
+ }
116
+
117
+ [ Fact ]
118
+ public void should_parse_relative_path_source ( )
119
+ {
120
+ Context ( ) ;
121
+ var source = "choco" ;
122
+ var fullsource = "C:\\ packages\\ choco" ;
123
+ configuration . Sources = source ;
124
+
125
+ because ( ) ;
126
+
127
+ packageRepositories . First ( ) . PackageSource . TrySourceAsUri . ShouldNotBeNull ( ) ;
128
+ packageRepositories . First ( ) . PackageSource . SourceUri . to_string ( )
129
+ . ShouldEqual ( ( "file:///" + fullsource ) . Replace ( "\\ " , "/" ) ) ;
130
+ packageRepositories . First ( ) . PackageSource . IsLocal . ShouldBeTrue ( ) ;
131
+ }
132
+
133
+ [ Fact ]
134
+ public void should_parse_dot_relative_path_source ( )
135
+ {
136
+ Context ( ) ;
137
+ var source = "." ;
138
+ var fullsource = "C:\\ packages" ;
139
+ configuration . Sources = source ;
140
+
141
+ because ( ) ;
142
+
143
+ packageRepositories . First ( ) . PackageSource . TrySourceAsUri . ShouldNotBeNull ( ) ;
144
+ packageRepositories . First ( ) . PackageSource . SourceUri . to_string ( )
145
+ . ShouldEqual ( ( "file:///" + fullsource + "/" ) . Replace ( "\\ " , "/" ) ) ;
146
+ packageRepositories . First ( ) . PackageSource . IsLocal . ShouldBeTrue ( ) ;
147
+ }
148
+
149
+ [ Fact ]
150
+ public void should_parse_unc_source ( )
151
+ {
152
+ Context ( ) ;
153
+ var source = "\\ \\ samba-server\\ choco-share" ;
154
+ configuration . Sources = source ;
155
+
156
+ because ( ) ;
157
+
158
+ packageRepositories . First ( ) . PackageSource . TrySourceAsUri . ShouldNotBeNull ( ) ;
159
+ packageRepositories . First ( ) . PackageSource . SourceUri . to_string ( )
160
+ . ShouldEqual ( ( "file:" + source ) . Replace ( "\\ " , "/" ) ) ;
161
+ packageRepositories . First ( ) . PackageSource . IsLocal . ShouldBeTrue ( ) ;
162
+ packageRepositories . First ( ) . PackageSource . SourceUri . IsUnc . ShouldBeTrue ( ) ;
163
+ }
63
164
}
64
165
}
65
166
}
0 commit comments