package skillbundle import ( "archive/zip" "bytes" "io" "slices" "strings" "testing" ) func TestLoadMetadata(t *testing.T) { metadata, err := LoadMetadata() if err != nil { t.Fatalf("load metadata: %v", err) } if metadata.Name != Name || metadata.Version != "1.0.1" { t.Fatalf("unexpected metadata: %+v", metadata) } if !slices.Equal(metadata.Modules, []string{"model-runtime"}) { t.Fatalf("unexpected modules: %+v", metadata.Modules) } if FileName(metadata) != "ai-gateway-ops-management-v1.0.1.zip" { t.Fatalf("unexpected file name: %s", FileName(metadata)) } } func TestBuildArchiveContainsOperationsSkill(t *testing.T) { raw, err := BuildArchive() if err != nil { t.Fatalf("build archive: %v", err) } archive, err := zip.NewReader(bytes.NewReader(raw), int64(len(raw))) if err != nil { t.Fatalf("open archive: %v", err) } files := make(map[string]*zip.File, len(archive.File)) for _, file := range archive.File { files[file.Name] = file if strings.HasPrefix(file.Name, "/") || strings.Contains(file.Name, "..") { t.Fatalf("unsafe archive path: %q", file.Name) } } expected := []string{ "SKILL.md", "agents/openai.yaml", "skill.json", "references/api-discovery-and-safety.md", "references/model-providers-and-base-models.md", "references/model-pricing-and-policies.md", "references/model-platforms-and-bindings.md", "references/model-universal-platforms.md", "references/model-acceptance-runbook.md", } for _, name := range expected { if files[name] == nil { t.Fatalf("archive missing %q; files=%v", name, archiveFileNames(archive.File)) } } skillFile, err := files["SKILL.md"].Open() if err != nil { t.Fatalf("open SKILL.md: %v", err) } defer skillFile.Close() skillContent, err := io.ReadAll(skillFile) if err != nil { t.Fatalf("read SKILL.md: %v", err) } if !strings.Contains(string(skillContent), "name: "+Name) { t.Fatalf("SKILL.md frontmatter has unexpected name") } } func archiveFileNames(files []*zip.File) []string { names := make([]string, 0, len(files)) for _, file := range files { names = append(names, file.Name) } return names }