UNPKG

accounts

Version:

Tempo Accounts SDK

243 lines (225 loc) 5.63 kB
import { describe, expect, test } from 'vp/test' import * as z from 'zod/mini' import * as Rpc from './rpc.js' describe('wallet_connect.capabilities.request: auth', () => { test('accepts string shorthand', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: '/api/auth', }), ).toMatchInlineSnapshot(` { "auth": "/api/auth", "method": "login", } `) }) test('accepts object with `url`', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { url: '/api/auth' }, }), ).toMatchInlineSnapshot(` { "auth": { "url": "/api/auth", }, "method": "login", } `) }) test('accepts object with `url` and `returnToken`', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { url: '/api/auth', returnToken: true }, }), ).toMatchInlineSnapshot(` { "auth": { "returnToken": true, "url": "/api/auth", }, "method": "login", } `) }) test('accepts explicit endpoints (challenge + verify + logout)', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { challenge: '/c', verify: '/v', logout: '/l' }, }), ).toMatchInlineSnapshot(` { "auth": { "challenge": "/c", "logout": "/l", "verify": "/v", }, "method": "login", } `) }) test('accepts explicit endpoints with `returnToken` and no `logout`', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { challenge: '/c', verify: '/v', returnToken: true }, }), ).toMatchInlineSnapshot(` { "auth": { "challenge": "/c", "returnToken": true, "verify": "/v", }, "method": "login", } `) }) test('accepts explicit endpoints without `logout`', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { challenge: '/c', verify: '/v' }, }), ).toMatchInlineSnapshot(` { "auth": { "challenge": "/c", "verify": "/v", }, "method": "login", } `) }) test('accepts logout-only object (cross-field validation lives outside zod)', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { logout: '/l' }, }), ).toMatchInlineSnapshot(` { "auth": { "logout": "/l", }, "method": "login", } `) }) test('rejects auth as number', () => { expect(() => z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: 42, }), ).toThrow() }) test('rejects auth.url as number', () => { expect(() => z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { url: 1 }, }), ).toThrow() }) test('rejects auth.returnToken as string', () => { expect(() => z.parse(Rpc.wallet_connect.capabilities.request, { method: 'login', auth: { returnToken: 'yes' }, }), ).toThrow() }) test('accepts auth alongside register branch', () => { expect( z.parse(Rpc.wallet_connect.capabilities.request, { method: 'register', auth: '/api/auth', }), ).toMatchInlineSnapshot(` { "auth": "/api/auth", "method": "register", } `) }) }) describe('wallet_connect.capabilities.result: auth + personalSign', () => { test('accepts auth with token + personalSign echo + root signature', () => { expect( z.parse(Rpc.wallet_connect.capabilities.result, { auth: { token: 'sess_abc' }, personalSign: { message: 'hello' }, signature: '0xdeadbeef', }), ).toMatchInlineSnapshot(` { "auth": { "token": "sess_abc", }, "personalSign": { "message": "hello", }, "signature": "0xdeadbeef", } `) }) test('accepts cookie-mode auth (empty object, no token)', () => { expect( z.parse(Rpc.wallet_connect.capabilities.result, { auth: {}, }), ).toMatchInlineSnapshot(` { "auth": {}, } `) }) test('accepts result without auth/personalSign', () => { expect(z.parse(Rpc.wallet_connect.capabilities.result, {})).toMatchInlineSnapshot(`{}`) }) }) describe('wallet_connect_strict.parameters: auth', () => { test('accepts string shorthand', () => { expect( z.parse(Rpc.wallet_connect_strict.parameters, { capabilities: { method: 'login', auth: '/api/auth', }, }), ).toMatchInlineSnapshot(` { "capabilities": { "auth": "/api/auth", "method": "login", }, } `) }) test('accepts object form with all fields', () => { expect( z.parse(Rpc.wallet_connect_strict.parameters, { capabilities: { method: 'login', auth: { url: '/api/auth', returnToken: true }, }, }), ).toMatchInlineSnapshot(` { "capabilities": { "auth": { "returnToken": true, "url": "/api/auth", }, "method": "login", }, } `) }) })