summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/replacer_test.go
diff options
context:
space:
mode:
authorPascal <pascalgn@users.noreply.github.com>2019-10-10 21:37:08 +0200
committerMatt Holt <mholt@users.noreply.github.com>2019-10-10 13:37:08 -0600
commitfe36d26b63b6398592e46604d1795f84ce0477d4 (patch)
tree14dbb7a456b93e4e7c1b58ae30694edf7c15c79a /modules/caddyhttp/replacer_test.go
parentb38365ff3b6ab8b2c474603fa0603831e7eff2a7 (diff)
caddyhttp: Add RemoteAddr placeholders (#2801)
* Ignore build artifacts * Add RemoteAddr placeholders
Diffstat (limited to 'modules/caddyhttp/replacer_test.go')
-rw-r--r--modules/caddyhttp/replacer_test.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/modules/caddyhttp/replacer_test.go b/modules/caddyhttp/replacer_test.go
new file mode 100644
index 0000000..d10c74f
--- /dev/null
+++ b/modules/caddyhttp/replacer_test.go
@@ -0,0 +1,71 @@
+// Copyright 2015 Matthew Holt and The Caddy Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package caddyhttp
+
+import (
+ "context"
+ "net/http"
+ "net/http/httptest"
+ "testing"
+
+ "github.com/caddyserver/caddy/v2"
+)
+
+func TestHTTPVarReplacement(t *testing.T) {
+ req, _ := http.NewRequest("GET", "/", nil)
+ repl := caddy.NewReplacer()
+ ctx := context.WithValue(req.Context(), caddy.ReplacerCtxKey, repl)
+ req = req.WithContext(ctx)
+ req.Host = "example.com:80"
+ req.RemoteAddr = "localhost:1234"
+ res := httptest.NewRecorder()
+ addHTTPVarsToReplacer(repl, req, res)
+
+ for i, tc := range []struct {
+ input string
+ expect string
+ }{
+ {
+ input: "{http.request.scheme}",
+ expect: "http",
+ },
+ {
+ input: "{http.request.host}",
+ expect: "example.com",
+ },
+ {
+ input: "{http.request.port}",
+ expect: "80",
+ },
+ {
+ input: "{http.request.hostport}",
+ expect: "example.com:80",
+ },
+ {
+ input: "{http.request.remote.host}",
+ expect: "localhost",
+ },
+ {
+ input: "{http.request.remote.port}",
+ expect: "1234",
+ },
+ } {
+ actual := repl.ReplaceAll(tc.input, "<empty>")
+ if actual != tc.expect {
+ t.Errorf("Test %d: Expected placeholder %s to be '%s' but got '%s'",
+ i, tc.input, tc.expect, actual)
+ }
+ }
+}