diff options
Diffstat (limited to 'middleware/pkg/replacer/replacer_test.go')
-rw-r--r-- | middleware/pkg/replacer/replacer_test.go | 130 |
1 files changed, 36 insertions, 94 deletions
diff --git a/middleware/pkg/replacer/replacer_test.go b/middleware/pkg/replacer/replacer_test.go index 09904c1a9..a72f429a8 100644 --- a/middleware/pkg/replacer/replacer_test.go +++ b/middleware/pkg/replacer/replacer_test.go @@ -1,28 +1,34 @@ package replacer -/* +import ( + "testing" + + "github.com/coredns/coredns/middleware/pkg/dnsrecorder" + "github.com/coredns/coredns/middleware/test" + + "github.com/miekg/dns" +) + func TestNewReplacer(t *testing.T) { - w := httptest.NewRecorder() - recordRequest := NewResponseRecorder(w) - reader := strings.NewReader(`{"username": "dennis"}`) + w := dnsrecorder.New(&test.ResponseWriter{}) - request, err := http.NewRequest("POST", "http://localhost", reader) - if err != nil { - t.Fatal("Request Formation Failed\n") - } - replaceValues := NewReplacer(request, recordRequest, "") + r := new(dns.Msg) + r.SetQuestion("example.org.", dns.TypeHINFO) + r.MsgHdr.AuthenticatedData = true + + replaceValues := New(r, w, "") switch v := replaceValues.(type) { case replacer: - if v.replacements["{host}"] != "localhost" { - t.Error("Expected host to be localhost") + if v.replacements["{type}"] != "HINFO" { + t.Errorf("Expected type to be HINFO, got %q", v.replacements["{type}"]) } - if v.replacements["{method}"] != "POST" { - t.Error("Expected request method to be POST") + if v.replacements["{name}"] != "example.org." { + t.Errorf("Expected request name to be example.org., got %q", v.replacements["{name}"]) } - if v.replacements["{status}"] != "200" { - t.Error("Expected status to be 200") + if v.replacements["{size}"] != "29" { // size of request + t.Errorf("Expected size to be 29, got %q", v.replacements["{size}"]) } default: @@ -30,90 +36,26 @@ func TestNewReplacer(t *testing.T) { } } -func TestReplace(t *testing.T) { - w := httptest.NewRecorder() - recordRequest := NewResponseRecorder(w) - reader := strings.NewReader(`{"username": "dennis"}`) - - request, err := http.NewRequest("POST", "http://localhost", reader) - if err != nil { - t.Fatal("Request Formation Failed\n") - } - request.Header.Set("Custom", "foobarbaz") - request.Header.Set("ShorterVal", "1") - repl := NewReplacer(request, recordRequest, "-") - - if expected, actual := "This host is localhost.", repl.Replace("This host is {host}."); expected != actual { - t.Errorf("{host} replacement: expected '%s', got '%s'", expected, actual) - } - if expected, actual := "This request method is POST.", repl.Replace("This request method is {method}."); expected != actual { - t.Errorf("{method} replacement: expected '%s', got '%s'", expected, actual) - } - if expected, actual := "The response status is 200.", repl.Replace("The response status is {status}."); expected != actual { - t.Errorf("{status} replacement: expected '%s', got '%s'", expected, actual) - } - if expected, actual := "The Custom header is foobarbaz.", repl.Replace("The Custom header is {>Custom}."); expected != actual { - t.Errorf("{>Custom} replacement: expected '%s', got '%s'", expected, actual) - } - - // Test header case-insensitivity - if expected, actual := "The cUsToM header is foobarbaz...", repl.Replace("The cUsToM header is {>cUsToM}..."); expected != actual { - t.Errorf("{>cUsToM} replacement: expected '%s', got '%s'", expected, actual) - } - - // Test non-existent header/value - if expected, actual := "The Non-Existent header is -.", repl.Replace("The Non-Existent header is {>Non-Existent}."); expected != actual { - t.Errorf("{>Non-Existent} replacement: expected '%s', got '%s'", expected, actual) - } - - // Test bad placeholder - if expected, actual := "Bad {host placeholder...", repl.Replace("Bad {host placeholder..."); expected != actual { - t.Errorf("bad placeholder: expected '%s', got '%s'", expected, actual) - } - - // Test bad header placeholder - if expected, actual := "Bad {>Custom placeholder", repl.Replace("Bad {>Custom placeholder"); expected != actual { - t.Errorf("bad header placeholder: expected '%s', got '%s'", expected, actual) - } - - // Test bad header placeholder with valid one later - if expected, actual := "Bad -", repl.Replace("Bad {>Custom placeholder {>ShorterVal}"); expected != actual { - t.Errorf("bad header placeholders: expected '%s', got '%s'", expected, actual) - } - - // Test shorter header value with multiple placeholders - if expected, actual := "Short value 1 then foobarbaz.", repl.Replace("Short value {>ShorterVal} then {>Custom}."); expected != actual { - t.Errorf("short value: expected '%s', got '%s'", expected, actual) - } -} - func TestSet(t *testing.T) { - w := httptest.NewRecorder() - recordRequest := NewResponseRecorder(w) - reader := strings.NewReader(`{"username": "dennis"}`) + w := dnsrecorder.New(&test.ResponseWriter{}) - request, err := http.NewRequest("POST", "http://localhost", reader) - if err != nil { - t.Fatalf("Request Formation Failed \n") - } - repl := NewReplacer(request, recordRequest, "") + r := new(dns.Msg) + r.SetQuestion("example.org.", dns.TypeHINFO) + r.MsgHdr.AuthenticatedData = true - repl.Set("host", "getcaddy.com") - repl.Set("method", "GET") - repl.Set("status", "201") - repl.Set("variable", "value") + repl := New(r, w, "") - if repl.Replace("This host is {host}") != "This host is getcaddy.com" { - t.Error("Expected host replacement failed") - } - if repl.Replace("This request method is {method}") != "This request method is GET" { - t.Error("Expected method replacement failed") + repl.Set("name", "coredns.io.") + repl.Set("type", "A") + repl.Set("size", "20") + + if repl.Replace("This name is {name}") != "This name is coredns.io." { + t.Error("Expected name replacement failed") } - if repl.Replace("The response status is {status}") != "The response status is 201" { - t.Error("Expected status replacement failed") + if repl.Replace("This type is {type}") != "This type is A" { + t.Error("Expected type replacement failed") } - if repl.Replace("The value of variable is {variable}") != "The value of variable is value" { - t.Error("Expected variable replacement failed") + if repl.Replace("The request size is {size}") != "The request size is 20" { + t.Error("Expected size replacement failed") } } -*/ |