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) | ||||
| 		// Also check IndexPages when requesting a directory | ||||
| 		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 { | ||||
| 			for _, resource := range rule.Resources { | ||||
| 				pushErr := pusher.Push(resource.Path, &http.PushOptions{ | ||||
|  | ||||
| @ -410,7 +410,56 @@ func TestMiddlewareShouldPushIndexFile(t *testing.T) { | ||||
| 	} | ||||
| 
 | ||||
| 	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) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user