# Sandbox y clientes de prueba

> La asociación gemela con socios sintéticos en todos los estados, los clientes de prueba y el restablecimiento.

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

Cada asociación puede tener un **sandbox**: una asociación gemela con la misma imagen, los mismos tipos de carné y el
mismo estatuto, poblada con socios sintéticos. Ahí desarrollas y pruebas sin tocar datos reales, y sin necesitar
ninguna aprobación.

Cada desarrollador invitado por la plataforma tiene además **uno propio**, que no pertenece a ninguna asociación: lo
crea, lo abre, lo regenera y lo elimina desde *Configuración de la cuenta › Desarrollador*, y dentro registra sus clientes de
prueba.

## Crearlo

Desde la consola **Desarrolladores**: el botón *Crear sandbox*, o registra un cliente en el entorno **Test** — el
sandbox se crea cuando hace falta. Quien lo crea pasa a formar parte de su junta directiva: desde el selector de
asociaciones puede entrar en él y usar el back office sobre los datos sintéticos (aprobar una solicitud, suspender un
carné, …).

## Los socios sintéticos

Seis cuentas, una por estado, con el correo `<estado>@<slug>-sandbox.sandbox.invalid` y **una contraseña común**, que
se muestra una vez al crearlo y en cada restablecimiento:

| Correo | Estado | Qué representa |
|---|---|---|
| `attivo@…` | activo | carné válido, estatuto aceptado — `verdict: valid` |
| `in-attesa@…` | pendiente | solicitud aún no aprobada |
| `sospeso@…` | suspendido | |
| `revocato@…` | revocado | |
| `scaduto@…` | activo pero caducado | `verdict: expired` |
| `statuto-da-accettare@…` | activo, estatuto no aceptado | `verdict: statuto_required` |

Inician sesión desde la página de acceso normal de Vimine, así que puedes probar **Iniciar sesión con Vimine** de
principio a fin: clic en tu sitio → inicio de sesión como `attivo@…` → consentimiento → callback → API.

:::tip
Para probar la solicitud de inscripción (`membership:request`) de alguien que **todavía no es socio**, inicia sesión
con una cuenta que no tenga carné en ese sandbox, por ejemplo una cuenta personal tuya: el consentimiento a los
permisos de inscripción también lo pueden dar quienes no son socios.
:::

## Las personas que crean tus pruebas

Quien se inscribe desde la página de inscripción del sandbox, y quien un cliente de prueba nombra con `/v1/signup` o
`/v1/enroll`, pasa a ser una persona **sintética** del sandbox: la dirección escrita se sustituye por una de su
dominio (`api-…@<slug>-sandbox.sandbox.invalid`, siempre la misma para la misma dirección), que la página muestra al
final de la inscripción. No se crea ni se toca ninguna cuenta real, y no sale ningún correo.

Estas cuentas valen **solo en el sandbox**: acceden allí con la contraseña elegida, pero no pueden inscribirse en una
asociación real, entrar en otra ni autorizar un cliente que no sea un cliente de prueba de su sandbox
(`sandbox_account`).

## Clientes de prueba

Un cliente del entorno Test (`vms_test_…` para los confidenciales) está vinculado al sandbox, aparece en la consola de
la asociación real, está **activo de inmediato** y emite tokens con `mode: "test"`. No puede tocar la asociación real.
Los correos del sandbox no se envían.

Para pasar a producción, registra un segundo cliente en el entorno **Producción** (con los mismos URI de redirección
`https`) y, una vez activado, cambia `clientId` en tu configuración: el código sigue igual.

## Restablecimiento

*Regenerar datos y credenciales* desde la consola, o con un cliente de prueba:

```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 — los socios empiezan de cero, contraseña nueva
```

El restablecimiento vuelve a crear los seis socios sintéticos (consentimientos y sesiones incluidos) y cambia su
contraseña; las personas creadas por tus pruebas se eliminan; los clientes y el sandbox se mantienen. Estos endpoints
piden el token de un cliente de prueba confidencial (`client_credentials`), no HTTP Basic; un cliente de producción
recibe `403`.

## Eliminarlo

*Eliminar sandbox* en la consola **Desarrolladores** (la junta directiva, o el operador de la plataforma) lo elimina
de inmediato, con sus socios sintéticos, las personas creadas por tus pruebas, los datos y los clientes de prueba, que
dejan de funcionar. Puedes crear uno nuevo cuando quieras.
