From 771bb13333807f12424e01d4d432394ccf9a28a5 Mon Sep 17 00:00:00 2001 From: unkin-agent Date: Sun, 1 Nov 2026 15:24:09 +1100 Subject: [PATCH] require base_url when an update sets repo_type remote --- internal/api/v2/remotes.go | 4 ++++ internal/api/v2/remotes_ttl_test.go | 2 ++ 2 files changed, 6 insertions(+) diff --git a/internal/api/v2/remotes.go b/internal/api/v2/remotes.go index 42c92e0..aad0b58 100644 --- a/internal/api/v2/remotes.go +++ b/internal/api/v2/remotes.go @@ -151,6 +151,10 @@ func (h *RemotesHandler) update(w http.ResponseWriter, r *http.Request) { http.Error(w, fmt.Sprintf("invalid repo type: %q", remote.RepoType), http.StatusBadRequest) return } + if remote.RepoType == models.RepoTypeRemote && remote.BaseURL == "" { + http.Error(w, "base_url is required for remote repositories", http.StatusBadRequest) + return + } if err := remote.ValidateMirrorlist(); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return diff --git a/internal/api/v2/remotes_ttl_test.go b/internal/api/v2/remotes_ttl_test.go index ecaa824..39548d3 100644 --- a/internal/api/v2/remotes_ttl_test.go +++ b/internal/api/v2/remotes_ttl_test.go @@ -203,6 +203,8 @@ func TestRepoTypeKeptOnUpdate(t *testing.T) { {"PUT", "/rt-local", `{"package_type":"rpm","description":"x"}`, 200, "rt-local", "local"}, {"PUT", "/rt-local", `{"package_type":"rpm","repo_type":""}`, 200, "rt-local", "local"}, {"PUT", "/rt-local", `{"package_type":"rpm","repo_type":"bogus"}`, 400, "rt-local", "local"}, + {"PUT", "/rt-local", `{"package_type":"rpm","repo_type":"remote"}`, 400, "rt-local", "local"}, + {"PUT", "/rt-remote", `{"package_type":"rpm","repo_type":"local"}`, 200, "rt-remote", "local"}, } { if c := do(t, h, s.method, s.path, s.json); c != s.code { t.Fatalf("step %d %s %s = %d, want %d", i, s.method, s.path, c, s.code)