package gitea_test import ( "context" "net/http" "net/http/httptest" "testing" "gitea.d-ma.be/mathias/gitea-mcp/internal/gitea" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestAddPushMirror(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { assert.Equal(t, http.MethodPost, r.Method) assert.Equal(t, "/api/v1/repos/mathias/infra/push_mirrors", r.URL.Path) w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) _, _ = w.Write([]byte(`{"id":1,"remote_name":"mirror-github","remote_address":"https://github.com/mathias/infra.git","interval":"8h0m0s","sync_on_commit":true}`)) })) defer srv.Close() c := gitea.NewClient(srv.URL, "tok") m, err := c.AddPushMirror(context.Background(), "mathias", "infra", gitea.AddPushMirrorArgs{ RemoteAddress: "https://github.com/mathias/infra.git", RemoteUsername: "mathias", RemotePassword: "secret", Interval: "8h0m0s", SyncOnCommit: true, }) require.NoError(t, err) assert.Equal(t, "mirror-github", m.RemoteName) assert.Equal(t, "https://github.com/mathias/infra.git", m.RemoteAddress) } func TestListPushMirrors(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { assert.Equal(t, http.MethodGet, r.Method) assert.Equal(t, "/api/v1/repos/mathias/infra/push_mirrors", r.URL.Path) w.Header().Set("Content-Type", "application/json") _, _ = w.Write([]byte(`[{"id":1,"remote_name":"mirror-github","remote_address":"https://github.com/mathias/infra.git","interval":"8h0m0s","sync_on_commit":true}]`)) })) defer srv.Close() c := gitea.NewClient(srv.URL, "tok") mirrors, err := c.ListPushMirrors(context.Background(), "mathias", "infra") require.NoError(t, err) require.Len(t, mirrors, 1) assert.Equal(t, "mirror-github", mirrors[0].RemoteName) } func TestDeletePushMirror(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { assert.Equal(t, http.MethodDelete, r.Method) assert.Equal(t, "/api/v1/repos/mathias/infra/push_mirrors/mirror-github", r.URL.Path) w.WriteHeader(http.StatusNoContent) })) defer srv.Close() c := gitea.NewClient(srv.URL, "tok") err := c.DeletePushMirror(context.Background(), "mathias", "infra", "mirror-github") require.NoError(t, err) }