# Sandbox e clientes de teste

> A associação gêmea com associados sintéticos em todos os status, os clientes de teste e a redefinição.

URL: https://developers.vimine.network/pt/guides/sandbox/

Cada associação pode ter um **sandbox**: uma associação gêmea com a mesma identidade visual, os mesmos tipos de
carteirinha e o mesmo statuto, povoada de associados sintéticos. Ali você desenvolve e testa sem tocar em dados
reais, e sem precisar de nenhuma aprovação.

Cada desenvolvedor convidado pela plataforma tem também **um só seu**, que não pertence a nenhuma associação: ele o
cria, abre, recria e exclui em *Configurações da conta › Desenvolvedor*, e lá dentro registra os clientes de teste.

## Como criá-lo

No console **Desenvolvedores**: o botão *Criar sandbox*, ou registre um cliente no ambiente **Teste** — o sandbox é
criado quando necessário. Quem o cria se torna dirigente dele: pelo seletor de associações pode entrar nele e usar o
back office com os dados sintéticos (aprovar um pedido, suspender uma carteirinha, …).

## Os associados sintéticos

Seis contas, uma por status, com e-mail `<state>@<slug>-sandbox.sandbox.invalid` e **uma senha compartilhada**,
mostrada uma vez na criação e a cada redefinição:

| E-mail | Status | O que representa |
|---|---|---|
| `attivo@…` | ativa | carteirinha válida, statuto aceito — `verdict: valid` |
| `in-attesa@…` | pendente | pedido ainda não aprovado |
| `sospeso@…` | suspensa | |
| `revocato@…` | revogada | |
| `scaduto@…` | ativa, mas vencida | `verdict: expired` |
| `statuto-da-accettare@…` | ativa, statuto não aceito | `verdict: statuto_required` |

Eles entram pela página de login normal do Vimine, então você pode testar o **Entrar com Vimine** de ponta a ponta:
clique no seu site → login como `attivo@…` → consentimento → callback → API.

:::tip
Para testar o pedido de adesão (`membership:request`) feito por alguém que **ainda não é associado**, entre com uma
conta que não tem carteirinha naquele sandbox, por exemplo uma conta pessoal sua: o consentimento às permissões de
adesão também é permitido a quem não é associado.
:::

## As pessoas que os seus testes criam

Quem se inscreve pela página de inscrição do sandbox, e quem um cliente de teste nomeia com `/v1/signup` ou
`/v1/enroll`, vira uma pessoa **sintética** do sandbox: o endereço digitado é substituído por um do seu domínio
(`api-…@<slug>-sandbox.sandbox.invalid`, sempre o mesmo para o mesmo endereço), que a página mostra no fim da
inscrição. Nenhuma conta real é criada ou tocada, e nenhum e-mail é enviado.

Essas contas valem **só no sandbox**: entram ali com a senha escolhida, mas não podem se inscrever numa associação real,
entrar em outra nem autorizar um cliente que não seja um cliente de teste do seu sandbox (`sandbox_account`).

## Clientes de teste

Um cliente no ambiente Teste (`vms_test_…` para os confidenciais) fica vinculado ao sandbox, aparece no console da
associação real, fica **ativo na hora** e emite tokens com `mode: "test"`. Ele não pode tocar na associação real.
Os e-mails do sandbox não são enviados.

Para ir para produção, registre um segundo cliente no ambiente **Produção** (com as mesmas URIs de redirecionamento
`https`) e, depois que ele for ativado, troque o `clientId` na sua configuração: o código continua o mesmo.

## Redefinição

*Regenerar dados e credenciais* no console, ou com um cliente de teste:

```js title="Node"
import { VimineServer } from '@vimine/sdk/server';

const vimineServer = new VimineServer({ clientId: 'vmc_…', clientSecret: 'vms_test_…' });
await vimineServer.sandbox.members();                      // GET  /v1/sandbox
const { password } = await vimineServer.sandbox.reset();   // POST /v1/sandbox/reset — os associados recomeçam do zero, senha nova
```

A redefinição recria os seis associados sintéticos (consentimentos e sessões incluídos) e troca a senha deles; as
pessoas criadas pelos seus testes são excluídas; os clientes e o sandbox continuam. Esses endpoints pedem o token de um
cliente de teste confidencial (`client_credentials`), não HTTP Basic; um cliente de produção recebe `403`.

## Excluí-lo

*Excluir sandbox* no console **Desenvolvedores** (a diretoria, ou o operador da plataforma) o exclui na hora, com os
associados sintéticos, as pessoas criadas pelos seus testes, os dados e os clientes de teste, que deixam de funcionar.
Você pode criar um novo quando quiser.
