func loadServerBlocks(serverType, filename string, input io.Reader) ([]caddyfile.ServerBlock, error) { validDirectives := ValidDirectives(serverType) serverBlocks, err := caddyfile.Parse(filename, input, validDirectives) if err != nil { return nil, err } if len(serverBlocks) == 0 && serverTypes[serverType].DefaultInput != nil { newInput := serverTypes[serverType].DefaultInput() serverBlocks, err = caddyfile.Parse(newInput.Path(), bytes.NewReader(newInput.Body()), validDirectives) if err != nil { return nil, err } } return serverBlocks, nil }
func TestInspectServerBlocksCaseInsensitiveKey(t *testing.T) { filename := "Testfile" ctx := newContext().(*httpContext) input := strings.NewReader("localhost {\n}\nLOCALHOST {\n}") sblocks, err := caddyfile.Parse(filename, input, nil) if err != nil { t.Fatalf("Expected no error setting up test, got: %v", err) } _, err = ctx.InspectServerBlocks(filename, sblocks) if err == nil { t.Error("Expected an error because keys on this server type are case-insensitive (so these are duplicated), but didn't get an error") } }
func TestInspectServerBlocksWithCustomDefaultPort(t *testing.T) { Port = "9999" filename := "Testfile" ctx := newContext().(*httpContext) input := strings.NewReader(`localhost`) sblocks, err := caddyfile.Parse(filename, input, nil) if err != nil { t.Fatalf("Expected no error setting up test, got: %v", err) } _, err = ctx.InspectServerBlocks(filename, sblocks) if err != nil { t.Fatalf("Didn't expect an error, but got: %v", err) } addr := ctx.keysToSiteConfigs["localhost"].Addr if addr.Port != Port { t.Errorf("Expected the port on the address to be set, but got: %#v", addr) } }