Files
kandev/apps/backend/internal/backendapp/gitlab_service_test.go
T
2026-06-24 23:02:16 +01:00

77 lines
2.2 KiB
Go

package backendapp
import (
"context"
"net/http"
"net/http/httptest"
"path/filepath"
"testing"
"github.com/jmoiron/sqlx"
_ "github.com/mattn/go-sqlite3"
"github.com/kandev/kandev/internal/db"
"github.com/kandev/kandev/internal/secrets"
)
type emptySecretStore struct{}
func (emptySecretStore) Create(context.Context, *secrets.SecretWithValue) error { return nil }
func (emptySecretStore) Get(context.Context, string) (*secrets.Secret, error) { return nil, nil }
func (emptySecretStore) Reveal(context.Context, string) (string, error) { return "", nil }
func (emptySecretStore) Update(context.Context, string, *secrets.UpdateSecretRequest) error {
return nil
}
func (emptySecretStore) Delete(context.Context, string) error { return nil }
func (emptySecretStore) List(context.Context) ([]*secrets.SecretListItem, error) {
return nil, nil
}
func (emptySecretStore) Close() error { return nil }
func TestInitGitLabServiceLoadsConfiguredHostAfterRestart(t *testing.T) {
t.Setenv("KANDEV_MOCK_GITLAB", "true")
t.Setenv("GITLAB_TOKEN", "")
gitlabServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/api/v4/version" {
http.NotFound(w, r)
return
}
_, _ = w.Write([]byte(`{"version":"16.0.0"}`))
}))
t.Cleanup(gitlabServer.Close)
pool := newGitLabServiceTestPool(t)
log := newTestLogger()
secretsStore := emptySecretStore{}
first := initGitLabService(pool, nil, secretsStore, log)
if first == nil {
t.Fatal("first GitLab service is nil")
}
if err := first.ConfigureHost(context.Background(), gitlabServer.URL+"/"); err != nil {
t.Fatalf("ConfigureHost: %v", err)
}
second := initGitLabService(pool, nil, secretsStore, log)
if second == nil {
t.Fatal("second GitLab service is nil")
}
if got := second.Host(); got != gitlabServer.URL {
t.Fatalf("Host after restart = %q, want %q", got, gitlabServer.URL)
}
}
func newGitLabServiceTestPool(t *testing.T) *db.Pool {
t.Helper()
dbPath := filepath.Join(t.TempDir(), "kandev.db")
conn, err := sqlx.Open("sqlite3", dbPath)
if err != nil {
t.Fatalf("open sqlite: %v", err)
}
conn.SetMaxOpenConns(1)
pool := db.NewPool(conn, conn)
t.Cleanup(func() { _ = pool.Close() })
return pool
}