mirror of
https://github.com/caddyserver/caddy.git
synced 2025-10-25 15:52:45 -04:00
Merged config and app packages into one called caddy. Abstracted away caddy startup functionality making it easier to embed Caddy in any Go application and use it as a library. Graceful restart (should) now ensure child starts properly. Now piping a gob bundle to child process so that the child can match up inherited listeners to server address. Much cleanup still to do.
52 lines
1.8 KiB
Go
52 lines
1.8 KiB
Go
package letsencrypt
|
|
|
|
import (
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/mholt/caddy/middleware/redirect"
|
|
"github.com/mholt/caddy/server"
|
|
)
|
|
|
|
func TestRedirPlaintextHost(t *testing.T) {
|
|
cfg := redirPlaintextHost(server.Config{
|
|
Host: "example.com",
|
|
Port: "http",
|
|
})
|
|
|
|
// Check host and port
|
|
if actual, expected := cfg.Host, "example.com"; actual != expected {
|
|
t.Errorf("Expected redir config to have host %s but got %s", expected, actual)
|
|
}
|
|
if actual, expected := cfg.Port, "http"; actual != expected {
|
|
t.Errorf("Expected redir config to have port '%s' but got '%s'", expected, actual)
|
|
}
|
|
|
|
// Make sure redirect handler is set up properly
|
|
if cfg.Middleware == nil || len(cfg.Middleware["/"]) != 1 {
|
|
t.Fatalf("Redir config middleware not set up properly; got: %#v", cfg.Middleware)
|
|
}
|
|
|
|
handler, ok := cfg.Middleware["/"][0](nil).(redirect.Redirect)
|
|
if !ok {
|
|
t.Fatalf("Expected a redirect.Redirect middleware, but got: %#v", handler)
|
|
}
|
|
if len(handler.Rules) != 1 {
|
|
t.Fatalf("Expected one redirect rule, got: %#v", handler.Rules)
|
|
}
|
|
|
|
// Check redirect rule for correctness
|
|
if actual, expected := handler.Rules[0].FromScheme, "http"; actual != expected {
|
|
t.Errorf("Expected redirect rule to be from scheme '%s' but is actually from '%s'", expected, actual)
|
|
}
|
|
if actual, expected := handler.Rules[0].FromPath, "/"; actual != expected {
|
|
t.Errorf("Expected redirect rule to be for path '%s' but is actually for '%s'", expected, actual)
|
|
}
|
|
if actual, expected := handler.Rules[0].To, "https://example.com{uri}"; actual != expected {
|
|
t.Errorf("Expected redirect rule to be to URL '%s' but is actually to '%s'", expected, actual)
|
|
}
|
|
if actual, expected := handler.Rules[0].Code, http.StatusMovedPermanently; actual != expected {
|
|
t.Errorf("Expected redirect rule to have code %d but was %d", expected, actual)
|
|
}
|
|
}
|