feat: add gitea skill discovery
This commit is contained in:
83
internal/gitea/client_test.go
Normal file
83
internal/gitea/client_test.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package gitea
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestListOrgSkillsFiltersReposWithoutSkillMD(t *testing.T) {
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/api/v1/orgs/skills/repos", func(w http.ResponseWriter, r *http.Request) {
|
||||
if got := r.URL.Query().Get("page"); got != "1" {
|
||||
t.Fatalf("page = %q, want 1", got)
|
||||
}
|
||||
_ = json.NewEncoder(w).Encode([]apiRepo{
|
||||
{Name: "good", FullName: "skills/good", CloneURL: "https://example/good.git", DefaultBranch: "main"},
|
||||
{Name: "bad", FullName: "skills/bad", CloneURL: "https://example/bad.git", DefaultBranch: "main"},
|
||||
})
|
||||
})
|
||||
mux.HandleFunc("/api/v1/repos/skills/good/contents/SKILL.md", func(w http.ResponseWriter, r *http.Request) {
|
||||
if got := r.URL.Query().Get("ref"); got != "main" {
|
||||
t.Fatalf("ref = %q, want main", got)
|
||||
}
|
||||
w.WriteHeader(http.StatusOK)
|
||||
})
|
||||
mux.HandleFunc("/api/v1/repos/skills/bad/contents/SKILL.md", func(w http.ResponseWriter, r *http.Request) {
|
||||
http.NotFound(w, r)
|
||||
})
|
||||
server := httptest.NewServer(mux)
|
||||
defer server.Close()
|
||||
|
||||
client := NewClient(server.URL, Auth{Type: AuthPassword, Username: "alice", Secret: "secret"})
|
||||
repos, err := client.ListOrgSkills(context.Background(), "skills")
|
||||
if err != nil {
|
||||
t.Fatalf("ListOrgSkills returned error: %v", err)
|
||||
}
|
||||
if len(repos) != 1 || repos[0].Name != "good" {
|
||||
t.Fatalf("repos = %+v, want only good", repos)
|
||||
}
|
||||
if repos[0].CloneURL != "https://example/good.git" {
|
||||
t.Fatalf("CloneURL = %q", repos[0].CloneURL)
|
||||
}
|
||||
}
|
||||
|
||||
func TestListOrgSkillsUsesTokenAuth(t *testing.T) {
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/api/v1/orgs/skills/repos", func(w http.ResponseWriter, r *http.Request) {
|
||||
if got := r.Header.Get("Authorization"); got != "token abc123" {
|
||||
t.Fatalf("Authorization = %q, want token abc123", got)
|
||||
}
|
||||
_ = json.NewEncoder(w).Encode([]apiRepo{})
|
||||
})
|
||||
server := httptest.NewServer(mux)
|
||||
defer server.Close()
|
||||
|
||||
client := NewClient(server.URL, Auth{Type: AuthToken, Secret: "abc123"})
|
||||
if _, err := client.ListOrgSkills(context.Background(), "skills"); err != nil {
|
||||
t.Fatalf("ListOrgSkills returned error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTestConnectionChecksCurrentUserAndOrg(t *testing.T) {
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/api/v1/user", func(w http.ResponseWriter, r *http.Request) {
|
||||
_ = json.NewEncoder(w).Encode(apiUser{UserName: "alice"})
|
||||
})
|
||||
mux.HandleFunc("/api/v1/orgs/skills", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusOK)
|
||||
})
|
||||
server := httptest.NewServer(mux)
|
||||
defer server.Close()
|
||||
|
||||
client := NewClient(server.URL, Auth{Type: AuthPassword, Username: "alice", Secret: "secret"})
|
||||
result, err := client.TestConnection(context.Background(), "skills")
|
||||
if err != nil {
|
||||
t.Fatalf("TestConnection returned error: %v", err)
|
||||
}
|
||||
if !result.OK || result.Username != "alice" || result.Org != "skills" {
|
||||
t.Fatalf("result = %+v", result)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user