mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-26 21:53:48 +03:00
fileserver: fix try_policy when instantiating file matcher from CEL (#6624)
Co-authored-by: Francis Lavoie <lavofr@gmail.com>
This commit is contained in:
parent
b443190b66
commit
9753c44510
3 changed files with 24 additions and 1 deletions
|
@ -191,7 +191,7 @@ func (MatchFile) CELLibrary(ctx caddy.Context) (cel.Library, error) {
|
|||
|
||||
var try_policy string
|
||||
if len(values["try_policy"]) > 0 {
|
||||
root = values["try_policy"][0]
|
||||
try_policy = values["try_policy"][0]
|
||||
}
|
||||
|
||||
m := MatchFile{
|
||||
|
|
|
@ -289,6 +289,7 @@ var expressionTests = []struct {
|
|||
wantErr bool
|
||||
wantResult bool
|
||||
clientCertificate []byte
|
||||
expectedPath string
|
||||
}{
|
||||
{
|
||||
name: "file error no args (MatchFile)",
|
||||
|
@ -354,6 +355,15 @@ var expressionTests = []struct {
|
|||
urlTarget: "https://example.com/nopenope.txt",
|
||||
wantResult: false,
|
||||
},
|
||||
{
|
||||
name: "file match long pattern foo.txt with try_policy (MatchFile)",
|
||||
expression: &caddyhttp.MatchExpression{
|
||||
Expr: `file({"root": "./testdata", "try_policy": "largest_size", "try_files": ["foo.txt", "large.txt"]})`,
|
||||
},
|
||||
urlTarget: "https://example.com/",
|
||||
wantResult: true,
|
||||
expectedPath: "/large.txt",
|
||||
},
|
||||
}
|
||||
|
||||
func TestMatchExpressionMatch(t *testing.T) {
|
||||
|
@ -382,6 +392,16 @@ func TestMatchExpressionMatch(t *testing.T) {
|
|||
if tc.expression.Match(req) != tc.wantResult {
|
||||
t.Errorf("MatchExpression.Match() expected to return '%t', for expression : '%s'", tc.wantResult, tc.expression.Expr)
|
||||
}
|
||||
|
||||
if tc.expectedPath != "" {
|
||||
path, ok := repl.Get("http.matchers.file.relative")
|
||||
if !ok {
|
||||
t.Errorf("MatchExpression.Match() expected to return path '%s', but got none", tc.expectedPath)
|
||||
}
|
||||
if path != tc.expectedPath {
|
||||
t.Errorf("MatchExpression.Match() expected to return path '%s', but got '%s'", tc.expectedPath, path)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
3
modules/caddyhttp/fileserver/testdata/large.txt
vendored
Normal file
3
modules/caddyhttp/fileserver/testdata/large.txt
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
This is a file with more content than the other files in this directory
|
||||
such that tests using the largest_size policy pick this file, or the
|
||||
smallest_size policy avoids this file.
|
Loading…
Reference in a new issue