forked from electricdusk/rushlink
		
	Add a test for issue #66
Together with af6d7623, this commit solves issue #66. Fixes #66.
This commit is contained in:
		
							parent
							
								
									af6d762378
								
							
						
					
					
						commit
						03a04389ae
					
				
							
								
								
									
										6
									
								
								views.go
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								views.go
									
									
									
									
									
								
							@ -219,7 +219,7 @@ func resolveResponseContentType(r *http.Request, types []string) (string, error)
 | 
			
		||||
	if len(types) == 0 {
 | 
			
		||||
		return "", nil
 | 
			
		||||
	}
 | 
			
		||||
	acceptHeader := r.Header.Get("Accept")
 | 
			
		||||
	acceptHeader := strings.TrimSpace(r.Header.Get("Accept"))
 | 
			
		||||
	if acceptHeader == "" {
 | 
			
		||||
		return types[0], nil
 | 
			
		||||
	}
 | 
			
		||||
@ -237,7 +237,7 @@ func resolveResponseContentType(r *http.Request, types []string) (string, error)
 | 
			
		||||
		choiceParts := strings.Split(avString, ";")
 | 
			
		||||
		mediaRange := acceptHeaderMediaRangeRegex.FindStringSubmatch(choiceParts[0])
 | 
			
		||||
		if mediaRange == nil {
 | 
			
		||||
			return "", fmt.Errorf("bad media-range (\"%v\")", choiceParts[0])
 | 
			
		||||
			return "", fmt.Errorf("bad media-range ('%v')", choiceParts[0])
 | 
			
		||||
		}
 | 
			
		||||
		av.Type = mediaRange[1]
 | 
			
		||||
		av.Subtype = mediaRange[2]
 | 
			
		||||
@ -262,7 +262,7 @@ func resolveResponseContentType(r *http.Request, types []string) (string, error)
 | 
			
		||||
			// Check if this parameter is still invalid in any case
 | 
			
		||||
			acceptParams := acceptHeaderAcceptParamsRegex.FindStringSubmatchIndex(choiceParts[0])
 | 
			
		||||
			if acceptParams == nil {
 | 
			
		||||
				return "", fmt.Errorf("bad accept-params (\"%v\")", choiceParts[0])
 | 
			
		||||
				return "", fmt.Errorf("bad accept-params ('%v')", choiceParts[0])
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		avs[i] = av
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,24 @@ func resolveResponseContentTypeSuccess(t *testing.T, expected string, types []st
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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"}, "")
 | 
			
		||||
@ -30,4 +48,7 @@ func TestResolveResponseContentType(t *testing.T) {
 | 
			
		||||
 | 
			
		||||
	// 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"}, " *")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user