feat: add deployment foundation and cross-device handoff
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package planner
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func validIntent() Intent {
|
||||
return Intent{ProtocolVersion: 1, HostID: "host-one", InstanceID: "git-one", AppID: "gitea", PackageDigest: "sha256:" + strings.Repeat("a", 64), ImageDigest: "sha256:" + strings.Repeat("b", 64), Domain: "git.example.com", ObservedStateDigest: "sha256:" + strings.Repeat("c", 64)}
|
||||
}
|
||||
|
||||
func TestIntentValidation(t *testing.T) {
|
||||
if err := validIntent().Validate(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
cases := []struct {
|
||||
name string
|
||||
change func(*Intent)
|
||||
}{
|
||||
{"protocol", func(i *Intent) { i.ProtocolVersion = 2 }},
|
||||
{"host empty", func(i *Intent) { i.HostID = "" }},
|
||||
{"path escape", func(i *Intent) { i.InstanceID = "../git" }},
|
||||
{"shell", func(i *Intent) { i.AppID = "git;id" }},
|
||||
{"long id", func(i *Intent) { i.InstanceID = strings.Repeat("a", 49) }},
|
||||
{"floating tag", func(i *Intent) { i.ImageDigest = "gitea:latest" }},
|
||||
{"package hash", func(i *Intent) { i.PackageDigest = "sha256:xyz" }},
|
||||
{"state missing", func(i *Intent) { i.ObservedStateDigest = "" }},
|
||||
{"url", func(i *Intent) { i.Domain = "https://git.example.com" }},
|
||||
{"wildcard", func(i *Intent) { i.Domain = "*.example.com" }},
|
||||
{"label", func(i *Intent) { i.Domain = "-git.example.com" }},
|
||||
{"empty label", func(i *Intent) { i.Domain = "git..com" }},
|
||||
{"uppercase", func(i *Intent) { i.Domain = "Git.example.com" }},
|
||||
{"ip", func(i *Intent) { i.Domain = "127.0.0.1" }},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
i := validIntent()
|
||||
tc.change(&i)
|
||||
if i.Validate() == nil {
|
||||
t.Fatal("accepted invalid intent")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user