55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package rushlink
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func resolveResponseContentTypeSuccess(t *testing.T, expected string, types []string, acceptVal string) {
 | |
| 	r, err := http.NewRequest("HEAD", "", nil)
 | |
| 	if err != nil {
 | |
| 		panic(err)
 | |
| 	}
 | |
| 	r.Header.Set("Accept", acceptVal)
 | |
| 	got, err := resolveResponseContentType(r, types)
 | |
| 	if err != nil {
 | |
| 		t.Errorf("error: '%v'\n", err)
 | |
| 	}
 | |
| 	if got != expected {
 | |
| 		t.Errorf("error: '%v' should be '%v'\n", got, expected)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func resolveResponseContentTypeError(t *testing.T, expected string, types []string, acceptVal string) {
 | |
| 	r, err := http.NewRequest("HEAD", "", nil)
 | |
| 	if err != nil {
 | |
| 		panic(err)
 | |
| 	}
 | |
| 	r.Header.Set("Accept", acceptVal)
 | |
| 	got, err := resolveResponseContentType(r, types)
 | |
| 	if err == nil {
 | |
| 		t.Errorf("expected an error, but got a success: '%v'", got)
 | |
| 	}
 | |
| 	if got != "" {
 | |
| 		t.Errorf("error: return value should be empty, not '%v'", got)
 | |
| 	}
 | |
| 	if err.Error() != expected {
 | |
| 		t.Errorf("wrong error value error: got '%v', want '%v'\n", got, expected)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestResolveResponseContentType(t *testing.T) {
 | |
| 	resolveResponseContentTypeSuccess(t, "", []string{}, "text/html")
 | |
| 	resolveResponseContentTypeSuccess(t, "text/html", []string{"text/html"}, "")
 | |
| 	resolveResponseContentTypeSuccess(t, "text/html", []string{"text/txt", "text/html"}, "text/txt;q=0.5,text/html")
 | |
| 	resolveResponseContentTypeSuccess(t, "text/html", []string{"text/txt", "text/html"}, "text/txt;q=0.5,text/html;q=0.9")
 | |
| 	resolveResponseContentTypeSuccess(t, "", []string{"text"}, "text/html")
 | |
| 	resolveResponseContentTypeSuccess(t, "", []string{"text/*"}, "image/*")
 | |
| 
 | |
| 	// Issue #17
 | |
| 	resolveResponseContentTypeSuccess(t, "*/*", []string{"*/*"}, "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3")
 | |
| 
 | |
| 	// Issue #66
 | |
| 	resolveResponseContentTypeError(t, "bad media-range ('*')", []string{"text/plain"}, " *")
 | |
| }
 |