@@ -491,3 +491,95 @@ func TestKidRun(t *testing.T) {
491
491
assert .Equal (t , "application/json" , resp .Header .Get ("Content-Type" ))
492
492
assert .Equal (t , "{\" message\" :\" healthy\" }\n " , string (body ))
493
493
}
494
+
495
+ func TestKidStatic (t * testing.T ) {
496
+ k := New ()
497
+
498
+ k .Static ("/static/" , "testdata/static" )
499
+
500
+ testCases := []struct {
501
+ name string
502
+ req * http.Request
503
+ res * httptest.ResponseRecorder
504
+ expectedStatusCode int
505
+ expectedContent string
506
+ }{
507
+ {
508
+ name : "Serving main.html" ,
509
+ req : httptest .NewRequest (http .MethodGet , "/static/main.html" , nil ),
510
+ res : httptest .NewRecorder (),
511
+ expectedStatusCode : http .StatusOK ,
512
+ expectedContent : "main" ,
513
+ },
514
+ {
515
+ name : "Serving page.html in pages directory" ,
516
+ req : httptest .NewRequest (http .MethodGet , "/static/pages/page.html" , nil ),
517
+ res : httptest .NewRecorder (),
518
+ expectedStatusCode : http .StatusOK ,
519
+ expectedContent : "page" ,
520
+ },
521
+ {
522
+ name : "Serving pages/index.html" ,
523
+ req : httptest .NewRequest (http .MethodGet , "/static/pages/" , nil ),
524
+ res : httptest .NewRecorder (),
525
+ expectedStatusCode : http .StatusOK ,
526
+ expectedContent : "index" ,
527
+ },
528
+ {
529
+ name : "Non-existent" ,
530
+ req : httptest .NewRequest (http .MethodGet , "/static/doesn't-exist.html" , nil ),
531
+ res : httptest .NewRecorder (),
532
+ expectedStatusCode : http .StatusNotFound ,
533
+ expectedContent : "404 page not found\n " ,
534
+ },
535
+ }
536
+
537
+ for _ , testCase := range testCases {
538
+ t .Run (testCase .name , func (t * testing.T ) {
539
+ k .ServeHTTP (testCase .res , testCase .req )
540
+
541
+ assert .Equal (t , testCase .expectedStatusCode , testCase .res .Code )
542
+ assert .Equal (t , testCase .expectedContent , testCase .res .Body .String ())
543
+ })
544
+ }
545
+
546
+ }
547
+
548
+ func TestKidStaticFS (t * testing.T ) {
549
+ k := New ()
550
+
551
+ k .StaticFS ("/static/" , http .Dir ("testdata/static" ))
552
+
553
+ testCases := []struct {
554
+ name string
555
+ req * http.Request
556
+ res * httptest.ResponseRecorder
557
+ expectedStatusCode int
558
+ expectedContent string
559
+ }{
560
+ {
561
+ name : "Serving main.html" ,
562
+ req : httptest .NewRequest (http .MethodGet , "/static/main.html" , nil ),
563
+ res : httptest .NewRecorder (),
564
+ expectedStatusCode : http .StatusOK ,
565
+ expectedContent : "main" ,
566
+ },
567
+ {
568
+ name : "Serving page.html in pages directory" ,
569
+ req : httptest .NewRequest (http .MethodGet , "/static/pages/page.html" , nil ),
570
+ res : httptest .NewRecorder (),
571
+ expectedStatusCode : http .StatusOK ,
572
+ expectedContent : "page" ,
573
+ },
574
+ }
575
+
576
+ for _ , testCase := range testCases {
577
+ t .Run (testCase .name , func (t * testing.T ) {
578
+ k .ServeHTTP (testCase .res , testCase .req )
579
+
580
+ assert .Equal (t , testCase .expectedStatusCode , testCase .res .Code )
581
+ assert .Equal (t , testCase .expectedContent , testCase .res .Body .String ())
582
+ })
583
+ }
584
+
585
+ }
0 commit comments