mirror of https://github.com/portainer/portainer
parent
fc3833a445
commit
5eec7de7e6
@ -0,0 +1,66 @@
|
||||
package stackutils
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func composeFileWithBuild(p string) []byte {
|
||||
return []byte(`
|
||||
services:
|
||||
service1:
|
||||
build: ` + p)
|
||||
}
|
||||
|
||||
func composeFileWithBuildContext(p string) []byte {
|
||||
return []byte(`
|
||||
services:
|
||||
service1:
|
||||
build:
|
||||
context: ` + p)
|
||||
}
|
||||
|
||||
func TestIsValidBuildContext(t *testing.T) {
|
||||
var validPaths = []string{
|
||||
".",
|
||||
"./portainer",
|
||||
`portainer\agent`,
|
||||
"portainer",
|
||||
" portainer",
|
||||
"https://github.com/portainer/portainer",
|
||||
"git@github.com/portainer/portainer.git",
|
||||
}
|
||||
|
||||
var invalidPaths = []string{
|
||||
"/etc/shadow",
|
||||
`C:\Windows`,
|
||||
"C:/Windows",
|
||||
"./../../../../../etc/shadow",
|
||||
" ..",
|
||||
}
|
||||
|
||||
testFn := func(p string, mustFail bool) {
|
||||
for _, fn := range []func(string) []byte{composeFileWithBuild, composeFileWithBuildContext} {
|
||||
composeConfig, err := loadComposeConfig(fn(p))
|
||||
if err != nil {
|
||||
t.Fatalf("failed to load compose config: %v", err)
|
||||
}
|
||||
|
||||
err = IsValidBuildContext(composeConfig)
|
||||
if mustFail && err == nil {
|
||||
t.Errorf("expected '%s' to be an invalid build context", p)
|
||||
}
|
||||
|
||||
if !mustFail && err != nil {
|
||||
t.Errorf("expected '%s' to be a valid build context", p)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, p := range validPaths {
|
||||
testFn(p, false)
|
||||
}
|
||||
|
||||
for _, p := range invalidPaths {
|
||||
testFn(p, true)
|
||||
}
|
||||
}
|
Loading…
Reference in new issue