-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHttpClientHintsHttpContextExtensionsTests.cs
More file actions
108 lines (91 loc) · 3.29 KB
/
HttpClientHintsHttpContextExtensionsTests.cs
File metadata and controls
108 lines (91 loc) · 3.29 KB
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
// Copyright © https://myCSharp.de - all rights reserved
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Primitives;
using Xunit;
namespace MyCSharp.HttpClientHints.AspNetCore.UnitTests;
public class HttpClientHintsHttpContextExtensionsTests
{
[Fact]
public void GetClientHints_ReturnsCorrectValues_WhenHeadersArePresent()
{
// Arrange
HeaderDictionary headers = new()
{
{ "User-Agent", new StringValues("TestUserAgent") },
{ "Sec-CH-UA", new StringValues("TestUA") },
{ "Sec-CH-UA-Platform", new StringValues("TestPlatform") },
{ "Sec-CH-UA-Platform-Version", new StringValues("1.0") },
{ "Sec-CH-UA-Arch", new StringValues("x64") },
{ "Sec-CH-UA-Bitness", new StringValues("64") },
{ "Sec-CH-UA-Full-Version-List", new StringValues("1.0.0.0") },
{ "Sec-CH-UA-Model", new StringValues("TestModel") },
{ "Sec-CH-UA-Mobile", new StringValues("?1") }
};
// Act
HttpClientHints clientHints = headers.GetClientHints();
// Assert
Assert.Equal("TestUserAgent", clientHints.UserAgent);
Assert.Equal("TestPlatform", clientHints.Platform);
Assert.Equal("1.0", clientHints.PlatformVersion);
Assert.Equal("x64", clientHints.Architecture);
Assert.Equal("TestModel", clientHints.Model);
Assert.Equal("1.0.0.0", clientHints.FullVersionList);
Assert.Equal("TestUA", clientHints.UA);
Assert.True(clientHints.Mobile);
Assert.Equal(headers, clientHints.Headers);
}
[Fact]
public void GetClientHints_ReturnsNullValues_WhenHeadersAreMissing()
{
// Arrange
HeaderDictionary headers = [];
// Act
HttpClientHints clientHints = headers.GetClientHints();
// Assert
Assert.Null(clientHints.UserAgent);
Assert.Null(clientHints.Platform);
Assert.Null(clientHints.PlatformVersion);
Assert.Null(clientHints.Architecture);
Assert.Null(clientHints.Model);
Assert.Null(clientHints.FullVersionList);
Assert.Null(clientHints.UA);
Assert.Null(clientHints.Mobile);
Assert.Equal(headers, clientHints.Headers);
}
[Fact]
public void GetClientHints_ReturnsCorrectMobileValue_WhenMobileHeaderIsTrue()
{
// Arrange
HeaderDictionary headers = new()
{
{ "Sec-CH-UA-Mobile", new StringValues("?1") } // true
};
// Act
HttpClientHints clientHints = headers.GetClientHints();
// Assert
Assert.True(clientHints.Mobile);
}
[Fact]
public void GetClientHints_ReturnsCorrectMobileValue_WhenMobileHeaderIsFalse()
{
// Arrange
HeaderDictionary headers = new()
{
{ "Sec-CH-UA-Mobile", new StringValues("?0") } // false
};
// Act
HttpClientHints clientHints = headers.GetClientHints();
// Assert
Assert.False(clientHints.Mobile);
}
[Fact]
public void GetClientHints_ReturnsCorrectMobileValue_WhenMobileHeaderIsNull()
{
// Arrange
HeaderDictionary headers = [];
// Act
HttpClientHints clientHints = headers.GetClientHints();
// Assert
Assert.Null(clientHints.Mobile);
}
}