fix plugin manifest registration upsert

This commit is contained in:
npc0-hue
2026-08-04 16:46:51 +08:00
parent ee02974ff8
commit 980f1786dd
4 changed files with 38 additions and 9 deletions
+1 -2
View File
@@ -1123,14 +1123,13 @@ func (h *coreHandlers) gamePlugins(w http.ResponseWriter, r *http.Request) {
// gamePluginManifestRegistration godoc
// @Summary Register game management plugin manifest
// @Description Validates and registers one game management plugin manifest as installed registry metadata.
// @Description Validates and registers one game management plugin manifest as installed registry metadata, refreshing an existing manifest with the same ID in place.
// @Tags game-plugins
// @Accept json
// @Produce json
// @Param body body dto.GamePluginManifestRegistrationRequest true "Game plugin manifest registration request"
// @Success 201 {object} dto.GamePluginResponse
// @Failure 400 {object} dto.ErrorResponse
// @Failure 409 {object} dto.ErrorResponse
// @Failure 405 {object} dto.ErrorResponse
// @Router /api/v1/game-plugins/register-manifest [post]
func (h *coreHandlers) gamePluginManifestRegistration(w http.ResponseWriter, r *http.Request) {
+9 -2
View File
@@ -1292,8 +1292,15 @@ func TestGamePluginManifestRegistryAPI(t *testing.T) {
t.Fatalf("unexpected plugin detail: %+v", detail)
}
duplicate := performJSON(t, router, http.MethodPost, "/api/v1/game-plugins/register-manifest", registration)
assertErrorResponse(t, duplicate, http.StatusConflict, errorCodeDuplicate)
registration.Manifest.Version = "0.1.1"
registration.Manifest.Description = "Development plugin refreshed"
registration.ManifestRef = "artifact://manifests/game.example/0.1.1"
refreshed := postJSON[dto.GamePluginResponse](t, router, "/api/v1/game-plugins/register-manifest", registration)
if refreshed.ID != created.ID || refreshed.Version != "0.1.1" || refreshed.ManifestRef != "artifact://manifests/game.example/0.1.1" {
t.Fatalf("expected manifest registration to refresh existing plugin, got %+v", refreshed)
}
listed = getJSON[dto.GamePluginListResponse](t, router, "/api/v1/game-plugins?serverType=example&status=installed")
assertListCount(t, listed.Count, 1)
}
func TestPluginMarketplaceAPIListsDetailsAndChangesStateSafely(t *testing.T) {