import { describe, expect, it } from 'vitest'; import { IamClient } from '../../core/iam-client'; import { createAdminClient, createClient, createUserAndLogin } from './config'; describe('IamClient', () => { it('should create client with all services', () => { const client = createClient(); expect(client).toBeInstanceOf(IamClient); expect(client.auth).toBeDefined(); expect(client.users).toBeDefined(); expect(client.tenants).toBeDefined(); expect(client.projects).toBeDefined(); expect(client.roles).toBeDefined(); expect(client.devices).toBeDefined(); }); it('should login as admin and have a valid token', async () => { const client = await createAdminClient(); const token = await client.auth.getToken(); expect(token).toBeDefined(); expect(token.length).toBeGreaterThan(0); }); it('should share auth state across services', async () => { const client = await createAdminClient(); // After login, roles service should be able to make authenticated calls const code = `ROLE_AUTH_TEST_${Date.now()}`; const result = await client.roles.register({ code, name: 'Auth State Test' }); expect(result).toBeDefined(); expect(result.responseCode).toBe('ok'); // Clean up await client.roles.delete(result.id); }); it('should login as regular user, then access services', async () => { const client = createClient(); await createUserAndLogin(client); const identity = await client.auth.getIdentity(); expect(identity).toBeDefined(); expect(identity.email).toBeDefined(); }); });