headerwriter in processing_handler.go (#1507)

* headerwriter in processing_handler.go

* Remove not required etag tests

* ETagEnabled, LastModifiedEnabled true by default

* Changed Passthrough signature

* Removed etag package

* Merge writeDebugHeaders*
This commit is contained in:
Victor Sokolov
2025-08-27 15:20:10 +02:00
committed by GitHub
parent 49791b03a2
commit c6a95facbb
12 changed files with 211 additions and 798 deletions

View File

@@ -23,7 +23,7 @@ type writerTestCase struct {
req http.Header
res http.Header
config Config
fn func(*writer)
fn func(*Request)
}
func (s *HeaderWriterSuite) TestHeaderCases() {
@@ -45,7 +45,6 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
SetCanonicalHeader: false,
DefaultTTL: 0,
CacheControlPassthrough: false,
LastModifiedEnabled: false,
EnableClientHints: false,
SetVaryAccept: false,
},
@@ -105,7 +104,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
SetCanonicalHeader: true,
DefaultTTL: 3600,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetCanonical()
},
},
@@ -134,28 +133,10 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
SetCanonicalHeader: false,
DefaultTTL: 3600,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetCanonical()
},
},
{
name: "LastModified",
req: http.Header{
httpheaders.LastModified: []string{expires.Format(http.TimeFormat)},
},
res: http.Header{
httpheaders.LastModified: []string{expires.Format(http.TimeFormat)},
httpheaders.ContentSecurityPolicy: []string{"script-src 'none'"},
httpheaders.CacheControl: []string{"max-age=3600, public"},
},
config: Config{
LastModifiedEnabled: true,
DefaultTTL: 3600,
},
fn: func(w *writer) {
w.SetLastModified()
},
},
{
name: "SetMaxAgeTTL",
req: http.Header{},
@@ -167,7 +148,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
DefaultTTL: 3600,
FallbackImageTTL: 1,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetIsFallbackImage()
},
},
@@ -181,7 +162,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
config: Config{
DefaultTTL: math.MaxInt32,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetExpires(&expires)
},
},
@@ -196,7 +177,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
DefaultTTL: math.MaxInt32,
FallbackImageTTL: 600,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetIsFallbackImage()
w.SetExpires(&shortExpires)
},
@@ -213,7 +194,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
EnableClientHints: true,
SetVaryAccept: true,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetVary()
},
},
@@ -228,8 +209,8 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
httpheaders.ContentSecurityPolicy: []string{"script-src 'none'"},
},
config: Config{},
fn: func(w *writer) {
w.Passthrough([]string{"X-Test"})
fn: func(w *Request) {
w.Passthrough("X-Test")
},
},
{
@@ -241,7 +222,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
httpheaders.ContentSecurityPolicy: []string{"script-src 'none'"},
},
config: Config{},
fn: func(w *writer) {
fn: func(w *Request) {
h := http.Header{}
h.Set("X-From", "baz")
w.CopyFrom(h, []string{"X-From"})
@@ -256,7 +237,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
httpheaders.ContentSecurityPolicy: []string{"script-src 'none'"},
},
config: Config{},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetContentLength(123)
},
},
@@ -269,7 +250,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
httpheaders.ContentSecurityPolicy: []string{"script-src 'none'"},
},
config: Config{},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetContentType("image/png")
},
},
@@ -283,7 +264,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
config: Config{
DefaultTTL: 3600,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetExpires(nil)
},
},
@@ -298,7 +279,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
config: Config{
SetVaryAccept: true,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetVary()
},
},
@@ -313,7 +294,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
config: Config{
EnableClientHints: true,
},
fn: func(w *writer) {
fn: func(w *Request) {
w.SetVary()
},
},