feat(backend): add kiro account support

This commit is contained in:
nianzs
2026-04-30 14:02:05 +08:00
parent 9d801595c9
commit 05bc424c9a
60 changed files with 11916 additions and 38 deletions
@@ -0,0 +1,51 @@
//go:build unit
package service
import (
"context"
"testing"
"time"
kiropkg "github.com/Wei-Shaw/sub2api/internal/pkg/kiro"
"github.com/stretchr/testify/require"
)
func TestKiroIDCAuthRedirectURIUsesLoopbackIP(t *testing.T) {
require.Equal(t, "http://127.0.0.1:9876/oauth/callback", kiroIDCRedirectURI)
}
func TestKiroSocialAuthRedirectURIUsesLoopbackIP(t *testing.T) {
require.Equal(t, "http://localhost:49153", kiroSocialRedirectURI)
}
func TestBuildKiroSocialExchangeRedirectURIUsesProviderDefault(t *testing.T) {
require.Equal(
t,
"http://localhost:49153/oauth/callback?login_option=github",
buildKiroSocialExchangeRedirectURI("http://localhost:49153", "Github", "", ""),
)
}
func TestBuildKiroSocialExchangeRedirectURIPreservesParsedCallbackData(t *testing.T) {
require.Equal(
t,
"http://localhost:49153/signin/callback?login_option=google",
buildKiroSocialExchangeRedirectURI("http://localhost:49153", "Github", "/signin/callback", "google"),
)
}
func TestKiroOAuthService_ExchangeCodeRejectsExpiredSession(t *testing.T) {
svc := NewKiroOAuthService(nil)
svc.sessionStore.Set("expired-session", &kiropkg.AuthSession{
State: "expected-state",
CreatedAt: time.Now().Add(-11 * time.Minute),
})
_, err := svc.ExchangeCode(context.Background(), &KiroExchangeCodeInput{
SessionID: "expired-session",
State: "expected-state",
Code: "auth-code",
})
require.EqualError(t, err, "session not found or expired")
}