1
1
using Test
2
2
using HTTP
3
3
using Dash
4
- using Dash: make_handler, compress_handler, process_resource, state_handler, HandlerState,
4
+ using Dash: make_handler, compress_handler, process_resource, state_handler, HandlerState,
5
5
process_resource, Route, Router, add_route!, make_handler
6
6
using Dash. HttpHelpers: StaticRoute, DynamicRoute, try_handle, RouteHandler, _make_route
7
7
using CodecZlib
22
22
23
23
route = DynamicRoute (" /ddd/<var1>/fff/<var2>" )
24
24
@test route. static_segments == ((1 ," ddd" ), (3 , " fff" ))
25
- route. variables. var1 == 2
25
+ route. variables. var1 == 2
26
26
route. variables. var2 == 4
27
-
28
- route = _make_route (" /fff/sss/ggg/vvvv" )
27
+
28
+ route = _make_route (" /fff/sss/ggg/vvvv" )
29
29
@test route isa StaticRoute
30
30
@test route. url == " /fff/sss/ggg/vvvv"
31
31
32
- route = _make_route (" /fff/sss/<var1>/vvvv" )
32
+ route = _make_route (" /fff/sss/<var1>/vvvv" )
33
33
@test route isa DynamicRoute
34
34
35
- route = _make_route (" /test_req/test1" )
35
+ route = _make_route (" /test_req/test1" )
36
36
handler = (req) -> HTTP. Response (200 )
37
37
route_handler = RouteHandler (route, handler)
38
38
res = try_handle (route_handler, path_request (" /test_req/test2" )... )
43
43
@test res. status == 200
44
44
45
45
46
- route = _make_route (" /test_req/<var1>/test1" )
46
+ route = _make_route (" /test_req/<var1>/test1" )
47
47
handler = (req;kwargs... ) ->
48
48
begin
49
49
tmp = String[]
63
63
@test res. status == 200
64
64
@test String (res. body) == " var1->asdasd"
65
65
66
- route = _make_route (" /test_req/*/test1" )
66
+ route = _make_route (" /test_req/*/test1" )
67
67
route_handler = RouteHandler (route, handler)
68
68
res = try_handle (route_handler, path_request (" /test_req/asdasd/test2" )... )
69
69
@test isnothing (res)
70
70
res = try_handle (route_handler, path_request (" /test_req/asdasd/test1" )... )
71
71
@test res. status == 200
72
72
@test String (res. body) == " "
73
73
74
- route = _make_route (" /test_req/*/test1/<var1>" )
74
+ route = _make_route (" /test_req/*/test1/<var1>" )
75
75
route_handler = RouteHandler (route, handler)
76
76
res = try_handle (route_handler, path_request (" /test_req/asdasd/test1" )... )
77
77
@test isnothing (res)
78
78
res = try_handle (route_handler, path_request (" /test_req/asdasd/test1/ddd" )... )
79
79
@test res. status == 200
80
80
@test String (res. body) == " var1->ddd"
81
-
82
- route = _make_route (" /test_req/<var2>/test1/<var1>" )
81
+
82
+ route = _make_route (" /test_req/<var2>/test1/<var1>" )
83
83
route_handler = RouteHandler (route, handler)
84
84
res = try_handle (route_handler, path_request (" /test_req/asdasd/test1" )... )
85
85
@test isnothing (res)
@@ -109,73 +109,73 @@ end
109
109
110
110
handler1 = (req;var1) -> HTTP. Response (200 , " var1=$var1 " )
111
111
add_route! (handler1, router, " /var/<var1>/" )
112
-
113
- add_route! ((req;var1, var2) -> HTTP. Response (200 , " var1=$var1 ,var2=$var2 " ),
114
- router, " /var/<var1>/<var2>/" )
115
-
116
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" GET" ," " ))
112
+
113
+ add_route! ((req;var1, var2) -> HTTP. Response (200 , " var1=$var1 ,var2=$var2 " ),
114
+ router, " /var/<var1>/<var2>/" )
115
+
116
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" GET" ," " ))
117
117
@test res. status == 200
118
118
@test String (res. body) == " index"
119
119
120
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" GET" ," /" ))
120
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" GET" ," /" ))
121
121
@test res. status == 200
122
122
@test String (res. body) == " index"
123
123
124
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" GET" ," /test_post" ))
124
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" GET" ," /test_post" ))
125
125
@test res. status == 404
126
-
127
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test_post" ))
126
+
127
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test_post" ))
128
128
@test res. status == 200
129
129
@test String (res. body) == " test_post"
130
130
131
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/" ))
131
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/" ))
132
132
@test res. status == 404
133
133
134
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass" ))
134
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass" ))
135
135
@test res. status == 200
136
136
@test String (res. body) == " var1=ass"
137
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/" ))
137
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/" ))
138
138
@test res. status == 200
139
139
@test String (res. body) == " var1=ass"
140
140
141
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/fff" ))
141
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/fff" ))
142
142
@test res. status == 200
143
143
@test String (res. body) == " var1=ass,var2=fff"
144
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/fff/" ))
144
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/fff/" ))
145
145
@test res. status == 200
146
146
@test String (res. body) == " var1=ass,var2=fff"
147
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/fff/dd" ))
147
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /var/ass/fff/dd" ))
148
148
@test res. status == 404
149
149
150
- add_route! ((req, param;var1) -> HTTP. Response (200 , " $param , var1=$var1 " ),
151
- router, " POST" , " /<var1>" )
152
-
153
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test_post" ))
150
+ add_route! ((req, param;var1) -> HTTP. Response (200 , " $param , var1=$var1 " ),
151
+ router, " POST" , " /<var1>" )
152
+
153
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test_post" ))
154
154
@test res. status == 200
155
155
@test String (res. body) == " test_post"
156
156
157
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test" ), " aaa" )
157
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test" ), " aaa" )
158
158
@test res. status == 200
159
159
@test String (res. body) == " aaa, var1=test"
160
160
161
- res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test/renderer/r.js" ), " aaa" )
161
+ res = Dash. HttpHelpers. handle (router, HTTP. Request (" POST" ," /test/renderer/r.js" ), " aaa" )
162
162
@test res. status == 200
163
163
@test String (res. body) == " aaa, var1=test/renderer/r.js"
164
-
165
- end
164
+
165
+ end
166
166
167
167
@testset " base_handler" begin
168
- function structsequal (a:: T , b:: T ):: Bool where T
169
- for name in propertynames (a)
170
- if getfield (a, name) != getfield (b, name)
171
- return false
172
- end
173
- end
174
- return true
175
- end
168
+ function structsequal (a:: T , b:: T ):: Bool where T
169
+ for name in propertynames (a)
170
+ if getfield (a, name) != getfield (b, name)
171
+ return false
172
+ end
173
+ end
174
+ return true
175
+ end
176
176
177
177
base_handler = function (request, state)
178
- @test request. target == " /test_path"
178
+ @test request. target == " /test_path"
179
179
@test state isa TestState
180
180
@test state. setting
181
181
return HTTP. Response (200 , " test1" )
@@ -185,31 +185,31 @@ end
185
185
test_handler = state_handler (base_handler, state)
186
186
test_request = HTTP. Request (" GET" , " /test_path" )
187
187
res = Dash. HttpHelpers. handle (test_handler, test_request)
188
- @test structsequal (res, test_handler (test_request)) # RequestHandlerFunction must be directly callable since HTTP.jl will use it
188
+ @test structsequal (res, test_handler (test_request)) # RequestHandlerFunction must be directly callable since HTTP.jl will use it
189
189
@test res. status == 200
190
190
@test String (res. body) == " test1"
191
191
@test startswith (HTTP. header (res, " Content-Type" , " " ), " text/plain" )
192
192
@test parse (Int, HTTP. header (res, " Content-Length" , " 0" )) == sizeof (" test1" )
193
193
194
194
base_handler_http = function (request, state)
195
- @test request. target == " /test_path2"
195
+ @test request. target == " /test_path2"
196
196
@test state isa TestState
197
197
@test state. setting
198
198
return HTTP. Response (200 , " <html></html>" )
199
199
end
200
-
200
+
201
201
state = TestState (true )
202
202
test_handler = state_handler (base_handler_http, state)
203
203
test_request = HTTP. Request (" GET" , " /test_path2" )
204
204
res = Dash. HttpHelpers. handle (test_handler, test_request)
205
- @test structsequal (res, test_handler (test_request))
206
- @test res. status == 200
205
+ @test structsequal (res, test_handler (test_request))
206
+ @test res. status == 200
207
207
@test String (res. body) == " <html></html>"
208
208
@test startswith (HTTP. header (res, " Content-Type" , " " ), " text/html" )
209
209
@test parse (Int, HTTP. header (res, " Content-Length" , " 0" )) == sizeof (" <html></html>" )
210
210
211
211
base_handler_js = function (request, state)
212
- @test request. target == " /test_path3"
212
+ @test request. target == " /test_path3"
213
213
@test state isa TestState
214
214
@test state. setting
215
215
return HTTP. Response (200 , [" Content-Type" => " text/javascript" ], body = " <html></html>" )
@@ -218,21 +218,21 @@ end
218
218
test_handler = state_handler (base_handler_js, state)
219
219
test_request = HTTP. Request (" GET" , " /test_path3" )
220
220
res = Dash. HttpHelpers. handle (test_handler, test_request)
221
- @test structsequal (res, test_handler (test_request))
222
- @test res. status == 200
221
+ @test structsequal (res, test_handler (test_request))
222
+ @test res. status == 200
223
223
@test String (res. body) == " <html></html>"
224
224
@test startswith (HTTP. header (res, " Content-Type" , " " ), " text/javascript" )
225
225
@test parse (Int, HTTP. header (res, " Content-Length" , " 0" )) == sizeof (" <html></html>" )
226
226
end
227
227
@testset " compression" begin
228
228
229
229
base_handler = function (request, state)
230
- @test request. target == " /test_path"
230
+ @test request. target == " /test_path"
231
231
@test state isa TestState
232
232
@test state. setting
233
233
return HTTP. Response (200 , " test1" )
234
234
end
235
-
235
+
236
236
state = TestState (true )
237
237
handler = compress_handler (state_handler (base_handler, state))
238
238
test_request = HTTP. Request (" GET" , " /test_path" )
243
243
@test ! HTTP. hasheader (res, " Content-Encoding" )
244
244
245
245
base_handler = function (request, state)
246
- @test request. target == " /test_big"
246
+ @test request. target == " /test_big"
247
247
@test state isa TestState
248
248
@test state. setting
249
249
return HTTP. Response (200 , repeat (" <html></html>" , 500 ))
290
290
dev_package_path = " dash-renderer/dash_renderer.js" ,
291
291
)
292
292
]
293
- )
293
+ )
294
294
)
295
295
296
296
test_app = dash ()
@@ -319,14 +319,14 @@ end
319
319
HTTP. setheader (request, " If-None-Match" => etag)
320
320
resp = Dash. HttpHelpers. handle (handler, request)
321
321
@test resp. status == 304
322
-
322
+
323
323
324
324
request = HTTP. Request (" GET" , " /_dash-component-suites/dash_renderer/props.v1_2_3m2333123.min.js" )
325
325
resp = Dash. HttpHelpers. handle (handler, request)
326
326
HTTP. setheader (request, " If-None-Match" => bytes2hex (md5 (" var a = [1,2,3,4,5,6]" )))
327
327
@test resp. status == 200
328
328
@test String (resp. body) == " var string = \" fffffff\" "
329
329
@test HTTP. hasheader (resp, " Cache-Control" )
330
-
330
+
331
331
end
332
332
0 commit comments