84 lines
2.8 KiB
Go
84 lines
2.8 KiB
Go
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)
|
|
}
|
|
}
|