1
+ namespace RestSharp . Tests ;
2
+
3
+ public partial class UrlBuilderTests {
4
+ [ Fact ]
5
+ public void GET_with_empty_base_and_query_parameters_without_encoding ( ) {
6
+ var request = new RestRequest ( $ "{ Base } /{ Resource } ?param1=value1")
7
+ . AddQueryParameter ( "foo" , "bar,baz" , false ) ;
8
+ var expected = new Uri ( $ "{ Base } /{ Resource } ?param1=value1&foo=bar,baz") ;
9
+
10
+ using var client = new RestClient ( ) ;
11
+
12
+ var output = client . BuildUri ( request ) ;
13
+ Assert . Equal ( expected , output ) ;
14
+ }
15
+
16
+ [ Fact ]
17
+ public void GET_with_empty_base_and_resource_containing_tokens ( ) {
18
+ var request = new RestRequest ( $ "{ Base } /{ Resource } /{{foo}}") ;
19
+ request . AddUrlSegment ( "foo" , "bar" ) ;
20
+
21
+ using var client = new RestClient ( ) ;
22
+
23
+ var expected = new Uri ( $ "{ Base } /{ Resource } /bar") ;
24
+ var output = client . BuildUri ( request ) ;
25
+
26
+ Assert . Equal ( expected , output ) ;
27
+ }
28
+
29
+ [ Fact ]
30
+ public void GET_with_empty_request ( ) {
31
+ var request = new RestRequest ( ) ;
32
+ var expected = new Uri ( Base ) ;
33
+
34
+ using var client = new RestClient ( new Uri ( Base ) ) ;
35
+
36
+ var output = client . BuildUri ( request ) ;
37
+ Assert . Equal ( expected , output ) ;
38
+ }
39
+
40
+ [ Fact ]
41
+ public void GET_with_empty_request_and_bare_hostname ( ) {
42
+ var request = new RestRequest ( ) ;
43
+ var expected = new Uri ( Base ) ;
44
+
45
+ using var client = new RestClient ( new Uri ( Base ) ) ;
46
+
47
+ var output = client . BuildUri ( request ) ;
48
+ Assert . Equal ( expected , output ) ;
49
+ }
50
+
51
+ [ Fact ]
52
+ public void GET_with_empty_request_and_query_parameters_without_encoding ( ) {
53
+ var request = new RestRequest ( ) ;
54
+ request . AddQueryParameter ( "foo" , "bar,baz" , false ) ;
55
+ var expected = new Uri ( $ "{ Base } /{ Resource } ?param1=value1&foo=bar,baz") ;
56
+
57
+ using var client = new RestClient ( $ "{ Base } /{ Resource } ?param1=value1") ;
58
+
59
+ var output = client . BuildUri ( request ) ;
60
+ Assert . Equal ( expected , output ) ;
61
+ }
62
+
63
+ [ Fact ]
64
+ public void GET_with_Invalid_Url_string_throws_exception ( )
65
+ => Assert . Throws < UriFormatException > (
66
+ ( ) => { _ = new RestClient ( "invalid url" ) ; }
67
+ ) ;
68
+
69
+ [ Fact ]
70
+ public void GET_with_leading_slash ( ) {
71
+ var request = new RestRequest ( $ "/{ Resource } ") ;
72
+ var expected = new Uri ( $ "{ Base } /{ Resource } ") ;
73
+
74
+ using var client = new RestClient ( new Uri ( Base ) ) ;
75
+
76
+ var output = client . BuildUri ( request ) ;
77
+ Assert . Equal ( expected , output ) ;
78
+ }
79
+
80
+ [ Fact ]
81
+ public void GET_with_leading_slash_and_baseurl_trailing_slash ( ) {
82
+ var request = new RestRequest ( $ "/{ Resource } ") ;
83
+ request . AddParameter ( "foo" , "bar" ) ;
84
+ var expected = new Uri ( $ "{ Base } /{ Resource } ?foo=bar") ;
85
+
86
+ using var client = new RestClient ( new Uri ( Base ) ) ;
87
+
88
+ var output = client . BuildUri ( request ) ;
89
+ Assert . Equal ( expected , output ) ;
90
+ }
91
+
92
+ [ Fact ]
93
+ public void GET_with_multiple_instances_of_same_key ( ) {
94
+ var request = new RestRequest ( "v1/people/~/network/updates" ) ;
95
+ request . AddParameter ( "type" , "STAT" ) ;
96
+ request . AddParameter ( "type" , "PICT" ) ;
97
+ request . AddParameter ( "count" , "50" ) ;
98
+ request . AddParameter ( "start" , "50" ) ;
99
+ var expected = new Uri ( "https://api.linkedin.com/v1/people/~/network/updates?type=STAT&type=PICT&count=50&start=50" ) ;
100
+
101
+ using var client = new RestClient ( "https://api.linkedin.com" ) ;
102
+
103
+ var output = client . BuildUri ( request ) ;
104
+ Assert . Equal ( expected , output ) ;
105
+ }
106
+
107
+ [ Fact ]
108
+ public void GET_with_resource_containing_null_token ( ) {
109
+ var request = new RestRequest ( $ "/{ Resource } /{{foo}}") ;
110
+ Assert . Throws < ArgumentNullException > ( ( ) => request . AddUrlSegment ( "foo" , null ! ) ) ;
111
+ }
112
+
113
+ [ Fact ]
114
+ public void GET_with_resource_containing_slashes ( ) {
115
+ var request = new RestRequest ( $ "{ Resource } /foo") ;
116
+ var expected = new Uri ( $ "{ Base } /{ Resource } /foo") ;
117
+
118
+ using var client = new RestClient ( new Uri ( Base ) ) ;
119
+
120
+ var output = client . BuildUri ( request ) ;
121
+ Assert . Equal ( expected , output ) ;
122
+ }
123
+
124
+ [ Fact ]
125
+ public void GET_with_resource_containing_tokens ( ) {
126
+ var request = new RestRequest ( $ "{ Resource } /{{foo}}") ;
127
+ request . AddUrlSegment ( "foo" , "bar" ) ;
128
+ var expected = new Uri ( $ "{ Base } /{ Resource } /bar") ;
129
+
130
+ using var client = new RestClient ( new Uri ( Base ) ) ;
131
+
132
+ var output = client . BuildUri ( request ) ;
133
+ Assert . Equal ( expected , output ) ;
134
+ }
135
+
136
+ [ Fact ]
137
+ public void GET_with_Uri_and_resource_containing_tokens ( ) {
138
+ var request = new RestRequest ( $ "/{{foo}}/{ Resource } /{{baz}}") ;
139
+ request . AddUrlSegment ( "foo" , "bar" ) ;
140
+ request . AddUrlSegment ( "baz" , "bat" ) ;
141
+ var expected = new Uri ( $ "{ Base } /bar/{ Resource } /bat") ;
142
+
143
+ using var client = new RestClient ( Base ) ;
144
+
145
+ var output = client . BuildUri ( request ) ;
146
+ Assert . Equal ( expected , output ) ;
147
+ }
148
+
149
+ [ Fact ]
150
+ public void GET_with_Uri_containing_tokens ( ) {
151
+ var request = new RestRequest ( ) ;
152
+ request . AddUrlSegment ( "foo" , "bar" ) ;
153
+ var expected = new Uri ( Base ) ;
154
+
155
+ using var client = new RestClient ( Base ) ;
156
+
157
+ var output = client . BuildUri ( request ) ;
158
+ Assert . Equal ( expected , output ) ;
159
+ }
160
+
161
+ [ Fact ]
162
+ public void GET_with_Url_string_and_resource_containing_tokens ( ) {
163
+ var request = new RestRequest ( $ "{ Resource } /{{baz}}") ;
164
+ request . AddUrlSegment ( "foo" , "bar" ) ;
165
+ request . AddUrlSegment ( "baz" , "bat" ) ;
166
+ var expected = new Uri ( $ "{ Base } /bar/{ Resource } /bat") ;
167
+
168
+ using var client = new RestClient ( $ "{ Base } /{{foo}}") ;
169
+
170
+ var output = client . BuildUri ( request ) ;
171
+ Assert . Equal ( expected , output ) ;
172
+ }
173
+
174
+ [ Fact ]
175
+ public void GET_with_Url_string_containing_tokens ( ) {
176
+ var request = new RestRequest ( ) ;
177
+ request . AddUrlSegment ( "foo" , "bar" ) ;
178
+ var expected = new Uri ( $ "{ Base } /bar") ;
179
+
180
+ using var client = new RestClient ( $ "{ Base } /{{foo}}") ;
181
+
182
+ var output = client . BuildUri ( request ) ;
183
+ Assert . Equal ( expected , output ) ;
184
+ }
185
+
186
+ [ Fact ]
187
+ public void GET_wth_trailing_slash_and_query_parameters ( ) {
188
+ var request = new RestRequest ( $ "/{ Resource } /") ;
189
+ request . AddParameter ( "foo" , "bar" ) ;
190
+ var expected = new Uri ( $ "{ Base } /{ Resource } /?foo=bar") ;
191
+
192
+ using var client = new RestClient ( Base ) ;
193
+
194
+ var output = client . BuildUri ( request ) ;
195
+ Assert . Equal ( expected , output ) ;
196
+ }
197
+ }
0 commit comments