65c8281348
compilePatterns silently drops any pattern that fails to compile, so a mistyped blocklist entry became a no-op (fail-open). Reject invalid patterns when a remote is created or updated via Remote.ValidatePatterns, returning 400 instead of storing a rule that never matches. Refs #72
20 lines
513 B
Go
20 lines
513 B
Go
package models
|
|
|
|
import "testing"
|
|
|
|
func TestRemote_ValidatePatterns(t *testing.T) {
|
|
valid := &Remote{
|
|
Patterns: []string{`.*\.tar\.gz$`},
|
|
Blocklist: []string{`^secret/`},
|
|
ImmutablePatterns: []string{`\.rpm$`},
|
|
}
|
|
if err := valid.ValidatePatterns(); err != nil {
|
|
t.Fatalf("expected valid patterns, got %v", err)
|
|
}
|
|
|
|
bad := &Remote{Blocklist: []string{`[unterminated`}}
|
|
if err := bad.ValidatePatterns(); err == nil {
|
|
t.Fatal("expected error for invalid blocklist regex, got nil")
|
|
}
|
|
}
|