func TestSetup(t *testing.T) { c := caddy.NewTestController("http", `rewrite /from /to`) err := setup(c) if err != nil { t.Errorf("Expected no errors, but got: %v", err) } mids := httpserver.GetConfig(c).Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, had 0 instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(Rewrite) if !ok { t.Fatalf("Expected handler to be type Rewrite, got: %#v", handler) } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } if len(myHandler.Rules) != 1 { t.Errorf("Expected handler to have %d rule, has %d instead", 1, len(myHandler.Rules)) } }
func TestSetup(t *testing.T) { c := caddy.NewTestController("http", `ext .html .htm .php`) err := setup(c) if err != nil { t.Fatalf("Expected no errors, got: %v", err) } mids := httpserver.GetConfig(c).Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, had 0 instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(Ext) if !ok { t.Fatalf("Expected handler to be type Ext, got: %#v", handler) } if myHandler.Extensions[0] != ".html" { t.Errorf("Expected .html in the list of Extensions") } if myHandler.Extensions[1] != ".htm" { t.Errorf("Expected .htm in the list of Extensions") } if myHandler.Extensions[2] != ".php" { t.Errorf("Expected .php in the list of Extensions") } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } }
func TestSetup(t *testing.T) { c := caddy.NewTestController("http", `internal /internal`) err := setup(c) if err != nil { t.Errorf("Expected no errors, got: %v", err) } mids := httpserver.GetConfig(c).Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, got 0 instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(Internal) if !ok { t.Fatalf("Expected handler to be type Internal, got: %#v", handler) } if myHandler.Paths[0] != "/internal" { t.Errorf("Expected internal in the list of internal Paths") } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } }
func TestSetup(t *testing.T) { c := caddy.NewTestController("http", `expvar`) err := setup(c) if err != nil { t.Errorf("Expected no errors, got: %v", err) } mids := httpserver.GetConfig(c).Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, got 0 instead") } c = caddy.NewTestController("http", `expvar /d/v`) err = setup(c) if err != nil { t.Errorf("Expected no errors, got: %v", err) } mids = httpserver.GetConfig(c).Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, got 0 instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(ExpVar) if !ok { t.Fatalf("Expected handler to be type ExpVar, got: %#v", handler) } if myHandler.Resource != "/d/v" { t.Errorf("Expected /d/v as expvar resource") } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } }
func TestSetup(t *testing.T) { err := setup(caddy.NewTestController(`errors`)) if err != nil { t.Errorf("Expected no errors, got: %v", err) } mids := httpserver.GetConfig("").Middleware() if len(mids) == 0 { t.Fatal("Expected middlewares, was nil instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(*ErrorHandler) if !ok { t.Fatalf("Expected handler to be type ErrorHandler, got: %#v", handler) } if myHandler.LogFile != "" { t.Errorf("Expected '%s' as the default LogFile", "") } if myHandler.LogRoller != nil { t.Errorf("Expected LogRoller to be nil, got: %v", *myHandler.LogRoller) } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } // Test Startup function -- TODO // if len(c.Startup) == 0 { // t.Fatal("Expected 1 startup function, had 0") // } // c.Startup[0]() // if myHandler.Log == nil { // t.Error("Expected Log to be non-nil after startup because Debug is not enabled") // } }
func TestSetup(t *testing.T) { c := caddy.NewTestController("http", `mime .txt text/plain`) err := setup(c) if err != nil { t.Errorf("Expected no errors, but got: %v", err) } mids := httpserver.GetConfig(c).Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, but had 0 instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(Mime) if !ok { t.Fatalf("Expected handler to be type Mime, got: %#v", handler) } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } tests := []struct { input string shouldErr bool }{ {`mime {`, true}, {`mime {}`, true}, {`mime a b`, true}, {`mime a {`, true}, {`mime { txt f } `, true}, {`mime { html } `, true}, {`mime { .html text/html .txt text/plain } `, false}, {`mime { .foo text/foo .bar text/bar .foo text/foobar } `, true}, {`mime { .html text/html } `, false}, {`mime { .html } `, true}, {`mime .txt text/plain`, false}, } for i, test := range tests { m, err := mimeParse(caddy.NewTestController("http", test.input)) if test.shouldErr && err == nil { t.Errorf("Test %v: Expected error but found nil %v", i, m) } else if !test.shouldErr && err != nil { t.Errorf("Test %v: Expected no error but found error: %v", i, err) } } }
func TestSetup(t *testing.T) { err := setup(caddy.NewTestController(`basicauth user pwd`)) if err != nil { t.Errorf("Expected no errors, but got: %v", err) } mids := httpserver.GetConfig("").Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, got 0 instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(BasicAuth) if !ok { t.Fatalf("Expected handler to be type BasicAuth, got: %#v", handler) } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } }
func TestSetup(t *testing.T) { c := caddy.NewTestController("http", `header / Foo Bar`) err := setup(c) if err != nil { t.Errorf("Expected no errors, but got: %v", err) } mids := httpserver.GetConfig(c).Middleware() if len(mids) == 0 { t.Fatal("Expected middleware, had 0 instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(Headers) if !ok { t.Fatalf("Expected handler to be type Headers, got: %#v", handler) } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } }
func TestSetup(t *testing.T) { cfg := httpserver.GetConfig("") err := setup(caddy.NewTestController(`log`)) if err != nil { t.Errorf("Expected no errors, got: %v", err) } mids := cfg.Middleware() if mids == nil { t.Fatal("Expected middleware, was nil instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(Logger) if !ok { t.Fatalf("Expected handler to be type Logger, got: %#v", handler) } if myHandler.Rules[0].PathScope != "/" { t.Errorf("Expected / as the default PathScope") } if myHandler.Rules[0].OutputFile != DefaultLogFilename { t.Errorf("Expected %s as the default OutputFile", DefaultLogFilename) } if myHandler.Rules[0].Format != DefaultLogFormat { t.Errorf("Expected %s as the default Log Format", DefaultLogFormat) } if myHandler.Rules[0].Roller != nil { t.Errorf("Expected Roller to be nil, got: %v", *myHandler.Rules[0].Roller) } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } }
func TestSetup(t *testing.T) { err := setup(caddy.NewTestController(`gzip`)) if err != nil { t.Errorf("Expected no errors, but got: %v", err) } mids := httpserver.GetConfig("").Middleware() if mids == nil { t.Fatal("Expected middleware, was nil instead") } handler := mids[0](httpserver.EmptyNext) myHandler, ok := handler.(Gzip) if !ok { t.Fatalf("Expected handler to be type Gzip, got: %#v", handler) } if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) { t.Error("'Next' field of handler was not set properly") } tests := []struct { input string shouldErr bool }{ {`gzip {`, true}, {`gzip {}`, true}, {`gzip a b`, true}, {`gzip a {`, true}, {`gzip { not f } `, true}, {`gzip { not } `, true}, {`gzip { not /file ext .html level 1 } `, false}, {`gzip { level 9 } `, false}, {`gzip { ext } `, true}, {`gzip { ext /f } `, true}, {`gzip { not /file ext .html level 1 } gzip`, false}, {`gzip { ext "" }`, false}, {`gzip { not /file ext .html level 1 } gzip { not /file1 ext .htm level 3 } `, false}, {`gzip { not /file ext .html level 1 } gzip { not /file1 ext .htm level 3 } `, false}, {`gzip { not /file ext * level 1 } `, false}, {`gzip { not /file ext * level 1 min_length ab } `, true}, {`gzip { not /file ext * level 1 min_length 1000 } `, false}, } for i, test := range tests { _, err := gzipParse(caddy.NewTestController(test.input)) if test.shouldErr && err == nil { t.Errorf("Test %v: Expected error but found nil", i) } else if !test.shouldErr && err != nil { t.Errorf("Test %v: Expected no error but found error: %v", i, err) } } }