165 lines
4.0 KiB
Go
165 lines
4.0 KiB
Go
package config
|
|
|
|
import "testing"
|
|
|
|
func TestValidatePublishTransformPolicy(t *testing.T) {
|
|
tests := publishTransformPolicyCases()
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := ValidatePublishTransformPolicy(tt.publish, tt.transform)
|
|
if tt.wantErr && err == nil {
|
|
t.Fatal("ValidatePublishTransformPolicy() error = nil, want error")
|
|
}
|
|
if !tt.wantErr && err != nil {
|
|
t.Fatalf("ValidatePublishTransformPolicy() error = %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateChecksPublishTransformPolicy(t *testing.T) {
|
|
tests := publishTransformPolicyCases()
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
cfg := Config{Pipelines: []Pipeline{{
|
|
ID: "reports",
|
|
Source: Backend{
|
|
Backend: BackendLocal,
|
|
Path: "/source",
|
|
},
|
|
Destinations: []Destination{{
|
|
ID: "archive",
|
|
Backend: BackendLocal,
|
|
Path: "/destination",
|
|
Publish: &tt.publish,
|
|
Transform: tt.transform,
|
|
}},
|
|
}}}
|
|
ApplyDefaults(&cfg)
|
|
err := Validate(cfg)
|
|
if tt.wantErr && err == nil {
|
|
t.Fatal("Validate() error = nil, want error")
|
|
}
|
|
if !tt.wantErr && err != nil {
|
|
t.Fatalf("Validate() error = %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateAcceptsForceReplacementTransferActions(t *testing.T) {
|
|
cfg := Config{Pipelines: []Pipeline{{
|
|
ID: "reports",
|
|
Source: Backend{
|
|
Backend: BackendLocal,
|
|
Path: "/source",
|
|
},
|
|
Destinations: []Destination{{
|
|
ID: "archive",
|
|
Backend: BackendLocal,
|
|
Path: "/destination",
|
|
Transfer: TransferPolicy{
|
|
OnDestinationNewer: TransferActionReplace,
|
|
OnConflict: TransferActionReplace,
|
|
},
|
|
}},
|
|
}}}
|
|
ApplyDefaults(&cfg)
|
|
if err := Validate(cfg); err != nil {
|
|
t.Fatalf("Validate() error = %v", err)
|
|
}
|
|
}
|
|
|
|
type publishTransformPolicyCase struct {
|
|
name string
|
|
publish PublishPolicy
|
|
transform Transform
|
|
wantErr bool
|
|
}
|
|
|
|
func publishTransformPolicyCases() []publishTransformPolicyCase {
|
|
return []publishTransformPolicyCase{
|
|
{
|
|
name: "source only allowed",
|
|
publish: PublishPolicy{Source: true},
|
|
},
|
|
{
|
|
name: "html only sidecar allowed",
|
|
publish: PublishPolicy{HTML: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: true,
|
|
Mode: TransformModeSidecar,
|
|
}},
|
|
},
|
|
{
|
|
name: "source and html sidecar allowed",
|
|
publish: PublishPolicy{Source: true, HTML: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: true,
|
|
Mode: TransformModeSidecar,
|
|
}},
|
|
},
|
|
{
|
|
name: "no outputs rejected",
|
|
publish: PublishPolicy{},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "html without transform rejected",
|
|
publish: PublishPolicy{HTML: true},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "html with disabled transform rejected",
|
|
publish: PublishPolicy{HTML: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: false,
|
|
Mode: TransformModeSidecar,
|
|
}},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "html with wrong mode rejected",
|
|
publish: PublishPolicy{HTML: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: true,
|
|
Mode: "inline",
|
|
}},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "enabled markdown wrong mode rejected",
|
|
publish: PublishPolicy{Source: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: true,
|
|
Mode: "inline",
|
|
}},
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "disabled markdown empty mode allowed",
|
|
publish: PublishPolicy{Source: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: false,
|
|
}},
|
|
},
|
|
{
|
|
name: "disabled markdown sidecar mode allowed",
|
|
publish: PublishPolicy{Source: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: false,
|
|
Mode: TransformModeSidecar,
|
|
}},
|
|
},
|
|
{
|
|
name: "disabled markdown wrong mode rejected",
|
|
publish: PublishPolicy{Source: true},
|
|
transform: Transform{MarkdownToHTML: &MarkdownToHTML{
|
|
Enabled: false,
|
|
Mode: "inline",
|
|
}},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
}
|