Skip to content

Commit 24d3b34

Browse files
Optimus (AI Agent)claude
andcommitted
test(e2e): add TestSkillDelete for skill deletion endpoint
Publishes a skill, verifies it exists, deletes it via CLI, and confirms it returns 404 afterward. Tests the DELETE endpoint added for #223. Co-Authored-By: Claude Opus 4.6 <[email protected]>
1 parent 8e9948c commit 24d3b34

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

e2e/skill_publish_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,63 @@ func TestSkillPublishDirectDryRun(t *testing.T) {
182182
RequireOutputContains(t, result, "DRY RUN")
183183
RequireOutputContains(t, result, "direct-test-skill")
184184
}
185+
186+
// TestSkillDelete tests publishing a skill and then deleting it via the
187+
// DELETE /v0/skills/{name}/versions/{version} endpoint.
188+
func TestSkillDelete(t *testing.T) {
189+
regURL := RegistryURL(t)
190+
tmpDir := t.TempDir()
191+
192+
skillName := UniqueNameWithPrefix("e2e-del-skill")
193+
version := "0.0.1-e2e"
194+
githubRepo := "https://github.com/agentregistry-dev/skills/tree/main/artifacts-builder"
195+
196+
// Create a skill folder with SKILL.md
197+
skillDir := filepath.Join(tmpDir, skillName)
198+
if err := os.MkdirAll(skillDir, 0755); err != nil {
199+
t.Fatalf("failed to create skill dir: %v", err)
200+
}
201+
skillMd := "---\nname: " + skillName + "\ndescription: E2E delete test\n---\n# Test\n"
202+
if err := os.WriteFile(filepath.Join(skillDir, "SKILL.md"), []byte(skillMd), 0644); err != nil {
203+
t.Fatalf("failed to write SKILL.md: %v", err)
204+
}
205+
206+
// Step 1: Publish the skill
207+
t.Run("publish", func(t *testing.T) {
208+
result := RunArctl(t, tmpDir,
209+
"skill", "publish", skillDir,
210+
"--github", githubRepo,
211+
"--version", version,
212+
"--registry-url", regURL,
213+
)
214+
RequireSuccess(t, result)
215+
})
216+
217+
// Step 2: Verify it exists
218+
t.Run("exists_before_delete", func(t *testing.T) {
219+
resp := RegistryGet(t, regURL+"/skills/"+skillName)
220+
defer resp.Body.Close()
221+
if resp.StatusCode != http.StatusOK {
222+
t.Fatalf("expected 200 before delete, got %d", resp.StatusCode)
223+
}
224+
})
225+
226+
// Step 3: Delete via CLI
227+
t.Run("delete", func(t *testing.T) {
228+
result := RunArctl(t, tmpDir,
229+
"skill", "delete", skillName,
230+
"--version", version,
231+
"--registry-url", regURL,
232+
)
233+
RequireSuccess(t, result)
234+
})
235+
236+
// Step 4: Verify it's gone
237+
t.Run("gone_after_delete", func(t *testing.T) {
238+
resp := RegistryGet(t, regURL+"/skills/"+skillName+"/versions/"+version)
239+
defer resp.Body.Close()
240+
if resp.StatusCode != http.StatusNotFound {
241+
t.Errorf("expected 404 after delete, got %d", resp.StatusCode)
242+
}
243+
})
244+
}

0 commit comments

Comments
 (0)