package zitadel // Tests for Zitadel client user info calls and placeholder methods. import ( "context" "encoding/json" "net/http" "net/http/httptest" "testing" "time" "github.com/stretchr/testify/require" ) // TestGetUserInfo_Success verifies user info retrieval on a 200 response. func TestGetUserInfo_Success(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { require.Equal(t, "Bearer token", r.Header.Get("Authorization")) w.Header().Set("Content-Type", "application/json") _ = json.NewEncoder(w).Encode(UserInfo{ ID: "user-1", Email: "a@b.com", Name: "Alice", Verified: true, Roles: []string{"player"}, }) })) defer server.Close() client := NewClient(Config{BaseURL: server.URL, Timeout: 2 * time.Second}) info, err := client.GetUserInfo(context.Background(), "token") require.NoError(t, err) require.Equal(t, "user-1", info.ID) } // TestGetUserInfo_NonOK verifies non-200 responses return an error. func TestGetUserInfo_NonOK(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) })) defer server.Close() client := NewClient(Config{BaseURL: server.URL, Timeout: 2 * time.Second}) _, err := client.GetUserInfo(context.Background(), "token") require.Error(t, err) } // TestClient_NotImplementedMethods verifies placeholder methods return errors. func TestClient_NotImplementedMethods(t *testing.T) { client := NewClient(DefaultConfig()) _, err := client.ValidateToken(context.Background(), "token") require.Error(t, err) _, err = client.RefreshToken(context.Background(), "refresh") require.Error(t, err) require.Error(t, client.RevokeToken(context.Background(), "token")) }