mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	mw/logs: add rflags to logging (#845)
Add the DNS message response flags as {rflags} to the default logging
Also complete the replacer testing that is was commented out.
And (unrelated) Switch erratic and whoami to ease testing.
Note: {flags} could and should be added as well - but we can leave that
as a beginners bug.
			
			
This commit is contained in:
		| @@ -1,28 +1,34 @@ | ||||
| package replacer | ||||
|  | ||||
| /* | ||||
| func TestNewReplacer(t *testing.T) { | ||||
| 	w := httptest.NewRecorder() | ||||
| 	recordRequest := NewResponseRecorder(w) | ||||
| 	reader := strings.NewReader(`{"username": "dennis"}`) | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	request, err := http.NewRequest("POST", "http://localhost", reader) | ||||
| 	if err != nil { | ||||
| 		t.Fatal("Request Formation Failed\n") | ||||
| 	} | ||||
| 	replaceValues := NewReplacer(request, recordRequest, "") | ||||
| 	"github.com/coredns/coredns/middleware/pkg/dnsrecorder" | ||||
| 	"github.com/coredns/coredns/middleware/test" | ||||
|  | ||||
| 	"github.com/miekg/dns" | ||||
| ) | ||||
|  | ||||
| func TestNewReplacer(t *testing.T) { | ||||
| 	w := dnsrecorder.New(&test.ResponseWriter{}) | ||||
|  | ||||
| 	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") | ||||
| 	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("This request method is {method}") != "This request method is GET" { | ||||
| 		t.Error("Expected method replacement failed") | ||||
| 	if repl.Replace("This type is {type}") != "This type is A" { | ||||
| 		t.Error("Expected type replacement failed") | ||||
| 	} | ||||
| 	if repl.Replace("The response status is {status}") != "The response status is 201" { | ||||
| 		t.Error("Expected status 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") | ||||
| 	} | ||||
| } | ||||
| */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user