From fe36d26b63b6398592e46604d1795f84ce0477d4 Mon Sep 17 00:00:00 2001 From: Pascal Date: Thu, 10 Oct 2019 21:37:08 +0200 Subject: caddyhttp: Add RemoteAddr placeholders (#2801) * Ignore build artifacts * Add RemoteAddr placeholders --- modules/caddyhttp/replacer_test.go | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 modules/caddyhttp/replacer_test.go (limited to 'modules/caddyhttp/replacer_test.go') 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, "") + if actual != tc.expect { + t.Errorf("Test %d: Expected placeholder %s to be '%s' but got '%s'", + i, tc.input, tc.expect, actual) + } + } +} -- cgit v1.2.3