# Sandbox und Test-Clients

> Der Zwillingsverein mit synthetischen Mitgliedern in jedem Status, die Test-Clients und das Zurücksetzen.

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

Jeder Verein kann eine **Sandbox** haben: einen Zwillingsverein mit demselben Erscheinungsbild, denselben Mitgliedsarten
und demselben Statuto, gefüllt mit synthetischen Mitgliedern. Dort entwickeln und testen Sie, ohne echte
Daten zu berühren und ohne eine Freigabe zu brauchen.

Jeder Entwickler, den die Plattform einlädt, hat außerdem **eine eigene**, die keinem Verein gehört: Er legt sie unter
*Kontoeinstellungen › Entwickler* an, öffnet, erneuert und löscht sie dort und registriert darin seine Test-Clients.

## Anlegen

In der Konsole **Entwickler**: die Schaltfläche *Sandbox anlegen*, oder registrieren Sie einen Client in der Umgebung **Test**
— die Sandbox wird dann bei Bedarf angelegt. Wer sie anlegt, wird ihr Vorstandsmitglied: Über die Vereinsauswahl kann er sie
öffnen und die Verwaltung mit den synthetischen Daten nutzen (einen Antrag genehmigen, eine Mitgliedschaft aussetzen, …).

## Die synthetischen Mitglieder

Sechs Konten, eines pro Status, mit der E-Mail `<state>@<slug>-sandbox.sandbox.invalid` und **einem gemeinsamen Passwort**,
das beim Anlegen und bei jedem Zurücksetzen einmal angezeigt wird:

| E-Mail | Status | Wofür es steht |
|---|---|---|
| `attivo@…` | aktiv | gültiger Ausweis, Statuto akzeptiert — `verdict: valid` |
| `in-attesa@…` | ausstehend | Antrag noch nicht genehmigt |
| `sospeso@…` | ausgesetzt | |
| `revocato@…` | widerrufen | |
| `scaduto@…` | aktiv, aber abgelaufen | `verdict: expired` |
| `statuto-da-accettare@…` | aktiv, Statuto nicht akzeptiert | `verdict: statuto_required` |

Sie melden sich über die normale Vimine-Anmeldeseite an, sodass Sie **Mit Vimine anmelden** von Anfang bis Ende ausprobieren können: Klick
auf Ihrer Website → Anmeldung als `attivo@…` → Einwilligung → Callback → API.

:::tip
Um den Beitrittsantrag (`membership:request`) von jemandem auszuprobieren, der **noch nicht Mitglied ist**, melden Sie sich mit einem
Konto an, das in dieser Sandbox keinen Ausweis hat, zum Beispiel mit einem persönlichen Konto: Die Einwilligung in die
Beitrittsberechtigungen ist auch Nichtmitgliedern erlaubt.
:::

## Die Personen aus Ihren Tests

Wer sich über die Beitrittsseite der Sandbox anmeldet und wen ein Test-Client mit `/v1/signup` oder `/v1/enroll`
benennt, wird zu einer **synthetischen** Person der Sandbox: Die eingegebene Adresse wird durch eine Adresse ihrer
Domain ersetzt (`api-…@<slug>-sandbox.sandbox.invalid`, für dieselbe Adresse immer dieselbe), die die Seite am Ende
des Beitritts anzeigt. Kein echtes Konto wird angelegt oder berührt, und keine E-Mail wird versendet.

Diese Konten gelten **nur in der Sandbox**: Sie melden sich dort mit dem gewählten Passwort an, können aber keinem
echten Verein beitreten, keinen anderen öffnen und keinen Client autorisieren, der kein Test-Client ihrer Sandbox ist
(`sandbox_account`).

## Test-Clients

Ein Client in der Umgebung Test (`vms_test_…` bei vertraulichen) ist an die Sandbox gebunden, erscheint in der
Konsole des echten Vereins, ist **sofort aktiv** und stellt Tokens mit `mode: "test"` aus. Er kann den echten Verein
nicht berühren. E-Mails der Sandbox werden nicht versendet.

Für den Wechsel in die Produktion registrieren Sie einen zweiten Client in der Umgebung **Production** (mit denselben `https`-Redirect-URIs)
und ändern, sobald er aktiviert ist, `clientId` in Ihrer Konfiguration: Der Code bleibt derselbe.

## Zurücksetzen

*Daten und Zugangsdaten neu erzeugen* in der Konsole, oder mit einem Test-Client:

```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 — die Mitglieder fangen neu an, neues Passwort
```

Das Zurücksetzen erzeugt die sechs synthetischen Mitglieder neu (samt Einwilligungen und Sitzungen) und ändert ihr
Passwort; die Personen aus Ihren Tests werden gelöscht; die Clients und die Sandbox bleiben. Diese Endpunkte verlangen
das Token eines vertraulichen Test-Clients (`client_credentials`), kein HTTP Basic; ein Production-Client erhält `403`.

## Löschen

*Sandbox löschen* in der Konsole **Entwickler** (der Vorstand oder der Plattformbetreiber) löscht sie sofort, mit den
synthetischen Mitgliedern, den Personen aus Ihren Tests, den Daten und den Test-Clients, die nicht mehr funktionieren.
Sie können jederzeit eine neue anlegen.
