- Notifications
You must be signed in to change notification settings - Fork 196
/
Copy pathTransportTests.cs
123 lines (114 loc) · 3.97 KB
/
TransportTests.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
usingSystem;
usingSystem.Net;
usingSystem.Net.Http;
usingSystem.Text.Json;
usingSystem.Threading.Tasks;
usingLooker.RTL;
usingMicrosoft.VisualStudio.TestPlatform.CommunicationUtilities.ObjectModel;
usingXunit;
usingXunit.Abstractions;
namespacesdkrtl.Tests
{
/// <summary>
/// These tests require the Looker server configured in the root looker.ini file to be running
/// </summary>
/// TODO test MakeUrl()
/// TODO remove reliance on Looker server for these basic tests. Find some other reliable URLs for tests
/// TODO test binary (image) responses
publicclassTransportTests
{
privatereadonlyITestOutputHelper_testOutputHelper;
privateTestConfig_config;
privatedynamic_contentTypes;
privatereadonlystring[]_versionKeys={"looker_release_version","current_version","supported_versions"};
publicTransportTests(ITestOutputHelpertestOutputHelper)
{
_testOutputHelper=testOutputHelper;
_config=newTestConfig();
_contentTypes=_config.TestData["content_types"];
}
[Fact]
publicasyncTaskGetHtmlUrlTest()
{
varxp=newTransport(_config.Settings);
varactual=awaitxp.RawRequest(
HttpMethod.Get,
_config.HtmlTestUrl
);
Assert.True(actual.Ok);
Assert.Equal(HttpStatusCode.OK,actual.StatusCode);
Assert.Contains("text/html",actual.ContentType);
varcontent=actual.Body.ToString();
Assert.NotNull(content);
Assert.Contains(_config.HtmlTestContent,content);
}
[Fact]
publicasyncTaskGetJsonUrlTest()
{
varxp=newTransport(_config.Settings);
varactual=awaitxp.RawRequest(
HttpMethod.Get,
"/versions"
);
Assert.True(actual.Ok);
Assert.Equal(HttpStatusCode.OK,actual.StatusCode);
Assert.Contains("application/json",actual.ContentType);
varcontent=actual.Body.ToString();
Assert.NotNull(content);
Assert.Contains("looker_release_version",content);
varjson=JsonSerializer.Deserialize<Values>(content);
Assert.Equal(json.Keys,_versionKeys);
}
[Fact]
publicasyncTaskGetTypedUrlTest()
{
varxp=newTransport(_config.Settings);
varactual=awaitxp.Request<Values,Exception>(
HttpMethod.Get,
"/versions"
);
Assert.True(actual.Ok);
Assert.Equal(actual.Value.Keys,_versionKeys);
}
classTestModel:SdkModel
{
publicstring?string1{get;set;}=null;
publiclong?num1{get;set;}=null;
publicstring?string2{get;set;}=null;
publiclong?num2{get;set;}=null;
publicstring?string3{get;set;}=null;
publiclong?num3{get;set;}=null;
}
[Fact]
publicasyncTaskJsonTypingTest()
{
varpayload=@"
{
""string1"": 1,
""num1"": 1,
""string2"": ""2"",
""num2"": ""2"",
""string3"": ""3"",
""num3"": 3,
""string4"": ""4"",
""num4"": 4
}
";
varresp=newRawResponse
{
Method=HttpMethod.Get,
Body=payload,
StatusCode=HttpStatusCode.OK,
StatusMessage="test",
ContentType="application/json"
}asIRawResponse;
varactual=Transport.ParseResponse<TestModel,Exception>(resp).Value;
Assert.Equal("1",actual.string1);
Assert.Equal(1,actual.num1);
Assert.Equal("2",actual.string2);
Assert.Equal(2,actual.num2);
Assert.Equal("3",actual.string3);
Assert.Equal(3,actual.num3);
}
}
}