mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-31 02:27:19 -04:00 
			
		
		
		
	Do not push index file when not in a rule
+ test
This commit is contained in:
		
							parent
							
								
									10484cfad2
								
							
						
					
					
						commit
						b324a32b61
					
				| @ -30,9 +30,11 @@ outer: | |||||||
| 		matches := httpserver.Path(urlPath).Matches(rule.Path) | 		matches := httpserver.Path(urlPath).Matches(rule.Path) | ||||||
| 		// Also check IndexPages when requesting a directory | 		// Also check IndexPages when requesting a directory | ||||||
| 		if !matches { | 		if !matches { | ||||||
| 			_, matches = httpserver.IndexFile(h.Root, urlPath, staticfiles.IndexPages) | 			indexFile, isIndexFile := httpserver.IndexFile(h.Root, urlPath, staticfiles.IndexPages) | ||||||
|  | 			if isIndexFile { | ||||||
|  | 				matches = httpserver.Path(indexFile).Matches(rule.Path) | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 
 |  | ||||||
| 		if matches { | 		if matches { | ||||||
| 			for _, resource := range rule.Resources { | 			for _, resource := range rule.Resources { | ||||||
| 				pushErr := pusher.Push(resource.Path, &http.PushOptions{ | 				pushErr := pusher.Push(resource.Path, &http.PushOptions{ | ||||||
|  | |||||||
| @ -410,7 +410,56 @@ func TestMiddlewareShouldPushIndexFile(t *testing.T) { | |||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	comparePushedResources(t, expectedPushedResources, pushingWriter.pushed) | 	comparePushedResources(t, expectedPushedResources, pushingWriter.pushed) | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|  | func TestMiddlewareShouldNotPushIndexFileWhenNotARule(t *testing.T) { | ||||||
|  | 	// given | ||||||
|  | 	indexFile := "/index.html" | ||||||
|  | 	request, err := http.NewRequest(http.MethodGet, "/", nil) // Request root directory, not indexfile itself | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatalf("Could not create HTTP request: %v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	root, err := ioutil.TempDir("", "caddy") | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatalf("Could not create temporary directory: %v", err) | ||||||
|  | 	} | ||||||
|  | 	defer os.Remove(root) | ||||||
|  | 
 | ||||||
|  | 	middleware := Middleware{ | ||||||
|  | 		Next: httpserver.HandlerFunc(func(w http.ResponseWriter, r *http.Request) (int, error) { | ||||||
|  | 			return 0, nil | ||||||
|  | 		}), | ||||||
|  | 		Rules: []Rule{ | ||||||
|  | 			{Path: "dummy.html", Resources: []Resource{ | ||||||
|  | 				{Path: "/index.css", Method: http.MethodGet}, | ||||||
|  | 			}}}, | ||||||
|  | 		Root: http.Dir(root), | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	indexFilePath := filepath.Join(root, indexFile) | ||||||
|  | 	_, err = os.Create(indexFilePath) | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatalf("Could not create index file: %s: %v", indexFile, err) | ||||||
|  | 	} | ||||||
|  | 	defer os.Remove(indexFilePath) | ||||||
|  | 
 | ||||||
|  | 	pushingWriter := &MockedPusher{ | ||||||
|  | 		ResponseWriter: httptest.NewRecorder(), | ||||||
|  | 		returnedError:  errors.New("Cannot push right now"), | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// when | ||||||
|  | 	_, err2 := middleware.ServeHTTP(pushingWriter, request) | ||||||
|  | 
 | ||||||
|  | 	// then | ||||||
|  | 	if err2 != nil { | ||||||
|  | 		t.Error("Should not return error") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	expectedPushedResources := map[string]*http.PushOptions{} | ||||||
|  | 
 | ||||||
|  | 	comparePushedResources(t, expectedPushedResources, pushingWriter.pushed) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func comparePushedResources(t *testing.T, expected, actual map[string]*http.PushOptions) { | func comparePushedResources(t *testing.T, expected, actual map[string]*http.PushOptions) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user