Files
Excalidraw/workspace/oauth_test.go
T

47 lines
1.3 KiB
Go

package workspace
import (
"context"
"testing"
)
func TestUpsertOAuthSessionCreatesAndReusesIdentity(t *testing.T) {
store, cleanup := newTestStore(t)
defer cleanup()
profile := OAuthProfile{
Provider: "github",
ProviderUserID: "123",
Email: "octo@example.com",
Name: "Octo User",
Username: "octo",
AvatarURL: "https://example.com/avatar.png",
EmailVerified: true,
}
user, session, token, err := store.UpsertOAuthSession(context.Background(), profile)
if err != nil {
t.Fatalf("UpsertOAuthSession() error = %v", err)
}
if user.ID == "" || session.ID == "" || token == "" {
t.Fatalf("missing oauth output user=%#v session=%#v token=%q", user, session, token)
}
teams, err := store.ListTeamsForUser(context.Background(), user.ID)
if err != nil {
t.Fatalf("ListTeamsForUser() error = %v", err)
}
if len(teams) != 1 {
t.Fatalf("teams len = %d, want 1", len(teams))
}
sameUser, secondSession, secondToken, err := store.UpsertOAuthSession(context.Background(), profile)
if err != nil {
t.Fatalf("second UpsertOAuthSession() error = %v", err)
}
if sameUser.ID != user.ID {
t.Fatalf("second oauth user id = %s, want %s", sameUser.ID, user.ID)
}
if secondSession.ID == session.ID || secondToken == token {
t.Fatal("oauth login should create a fresh session")
}
}