建立 Go Task Scheduler 协议骨架
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package taskidentity
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
runnerv1 "gitea.dev/actionslib/runner/v1"
|
||||
"google.golang.org/protobuf/types/known/structpb"
|
||||
)
|
||||
|
||||
func TestFromTaskUsesFetchedContext(t *testing.T) {
|
||||
ctx, err := structpb.NewStruct(map[string]any{
|
||||
"repository": "panxiao81/gitea-dynamic-runner",
|
||||
"job": "publish-images",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
got, err := FromTask(&runnerv1.Task{Id: 900, Context: ctx}, "ddupan.top")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got.Repository != "panxiao81/gitea-dynamic-runner" || got.Task != "publish-images" {
|
||||
t.Fatalf("unexpected task identity context: %#v", got)
|
||||
}
|
||||
want := "spiffe://ddupan.top/ci/panxiao81/gitea-dynamic-runner/publish-images"
|
||||
if got.SPIFFEID != want {
|
||||
t.Fatalf("SPIFFE ID = %q, want %q", got.SPIFFEID, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFromTaskMatchesBootstrapNormalization(t *testing.T) {
|
||||
ctx, err := structpb.NewStruct(map[string]any{
|
||||
"repository": "panxiao81/postgresql-tenant-operator",
|
||||
"job": "Run on Ubuntu",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
got, err := FromTask(&runnerv1.Task{Context: ctx}, "ddupan.top")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
want := "spiffe://ddupan.top/ci/panxiao81/postgresql-tenant-operator/Run-on-Ubuntu-8b7cd4c244fb"
|
||||
if got.SPIFFEID != want {
|
||||
t.Fatalf("SPIFFE ID = %q, want %q", got.SPIFFEID, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFromTaskRejectsIncompleteServerContext(t *testing.T) {
|
||||
for _, fields := range []map[string]any{
|
||||
{"repository": "invalid", "job": "test"},
|
||||
{"repository": "owner/repo", "job": ""},
|
||||
} {
|
||||
ctx, err := structpb.NewStruct(fields)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := FromTask(&runnerv1.Task{Context: ctx}, "ddupan.top"); err == nil {
|
||||
t.Fatalf("expected invalid task context to fail: %#v", fields)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user