/
AssetsFileHasherTests.cs
124 lines (100 loc) · 5.01 KB
/
AssetsFileHasherTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System.IO;
using System.Reflection;
using NUnit.Framework;
using SquishIt.Framework.Resolvers;
using SquishIt.Framework.Utilities;
using SquishIt.Tests.Stubs;
using SquishIt.Tests.Helpers;
namespace SquishIt.Tests
{
[TestFixture]
public class AssetsFileHasherTests
{
[Test]
public void DoesNotAppendHashIfFileIsRemote()
{
var hashQueryStringKeyName = "v";
var fileResolver = new FileSystemResolver();
var hasher = new StubHasher("hash");
var cssFilePath = @"C:\somepath\output.css";
var url = "http://www.test.com/image.jpg";
var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);
var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);
Assert.That(rewrittenUrl, Is.EqualTo(url));
}
[Test]
public void DoesNotAppendHashIfFileDoesNotExists()
{
var hashQueryStringKeyName = "v";
var fileResolver = new FileSystemResolver();
var hasher = new StubHasher("hash");
var cssFilePath = TestUtilities.PreparePath(@"C:\somepath\output.css");
var url = "/doesnotexist.jpg";
var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);
var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);
Assert.That(rewrittenUrl, Is.EqualTo(url));
}
[Test]
public void CanAppendFileHashToRelativeUri()
{
var hashQueryStringKeyName = "v";
var hashValue = "hashValue";
var hasher = new StubHasher(hashValue);
var fileResolver = new FileSystemResolver();
var uri = Assembly.GetExecutingAssembly().CodeBase;
var cssFilePath = Path.GetDirectoryName(uri) + TestUtilities.PreparePath(@"\subdirectory\output.css");
var url = "../" + Path.GetFileName(uri);
var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);
var expectedUrl = url + "?" + hashQueryStringKeyName + "=" + hashValue;
var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);
Assert.That(rewrittenUrl, Is.EqualTo(expectedUrl));
}
[Test]
public void CanAppendFileHashToRelativeUriWithAnExistingQueryString()
{
var hashQueryStringKeyName = "v";
var hashValue = "hashValue";
var hasher = new StubHasher(hashValue);
var fileResolver = new FileSystemResolver();
var uri = Assembly.GetExecutingAssembly().CodeBase;
var cssFilePath = Path.GetDirectoryName(uri) + TestUtilities.PreparePath(@"\subdirectory\output.css");
var url = "../" + Path.GetFileName(uri) + "?test=value";
var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);
var expectedUrl = url + "&" + hashQueryStringKeyName + "=" + hashValue;
var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);
Assert.That(rewrittenUrl, Is.EqualTo(expectedUrl));
}
[Test]
public void CanAppendFileHashToAbsoluteUri()
{
var hashQueryStringKeyName = "v";
var hashValue = "hashValue";
var hasher = new StubHasher(hashValue);
var uri = Assembly.GetExecutingAssembly().CodeBase;
var cssFilePath = Path.Combine(Path.GetDirectoryName(uri), @"output.css");
var url = "/" + Path.GetFileName(uri);
var pathToResolveTo = Assembly.GetExecutingAssembly().Location;
var fileResolver = StubResolver.ForFile(pathToResolveTo);
var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);
var expectedUrl = url + "?" + hashQueryStringKeyName + "=" + hashValue;
var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);
Assert.That(rewrittenUrl, Is.EqualTo(expectedUrl));
}
[Test]
public void CanAppendFileHashToAbsoluteUriWithAnExistingQueryString()
{
var hashQueryStringKeyName = "v";
var hashValue = "hashValue";
var hasher = new StubHasher(hashValue);
var uri = Assembly.GetExecutingAssembly().CodeBase;
var cssFilePath = Path.GetDirectoryName(uri) + @"\output.css";
var url = "/" + Path.GetFileName(uri) + "?test=value";
var pathToResolveTo = Assembly.GetExecutingAssembly().Location;
var fileResolver = StubResolver.ForFile(pathToResolveTo);
var assetsFileHasher = new CssAssetsFileHasher(hashQueryStringKeyName, fileResolver, hasher);
var expectedUrl = url + "&" + hashQueryStringKeyName + "=" + hashValue;
var rewrittenUrl = assetsFileHasher.AppendFileHash(cssFilePath, url);
Assert.That(rewrittenUrl, Is.EqualTo(expectedUrl));
}
}
}