# 沙盒与测试客户端

> 含各种状态虚构会员的孪生协会、测试客户端，以及重置。

URL: https://developers.vimine.network/zh-hans/guides/sandbox/

每个协会都可以拥有一个**沙盒**：一个孪生协会，品牌形象、会员卡类型和章程都与原协会相同，其中是虚构会员。您可以在里面开发和测试，既不触及真实数据，也不需要任何审批。

平台邀请的每位开发者还拥有**一个自己的沙盒**，不属于任何协会：在“账户设置 › 开发者”中创建、打开、重建和删除，并在其中登记测试客户端。

## 创建沙盒

在**开发者**页面中：点击“创建沙盒”按钮，或者在**测试**环境中登记一个客户端——沙盒会按需创建。创建者会成为沙盒的理事会成员：可以通过协会切换器进入沙盒，在虚构数据上使用管理后台（批准申请、暂停会员卡等）。

## 虚构会员

六个账户，每种状态一个，电子邮箱为 `<state>@<slug>-sandbox.sandbox.invalid`，并共用**同一个密码**；该密码只在创建时和每次重置时显示一次：

| 电子邮箱 | 状态 | 代表的情形 |
|---|---|---|
| `attivo@…` | 有效 | 会员卡有效，已接受章程——`verdict: valid` |
| `in-attesa@…` | 待处理 | 申请尚未获批 |
| `sospeso@…` | 已暂停 | |
| `revocato@…` | 已撤销 | |
| `scaduto@…` | 有效但已过期 | `verdict: expired` |
| `statuto-da-accettare@…` | 有效，未接受章程 | `verdict: statuto_required` |

它们从普通的 Vimine 登录页面登录，因此您可以从头到尾试用**使用 Vimine 登录**：在您的网站上点击 → 以 `attivo@…` 登录 → 同意授权 → 回调 → API。

:::tip
如果要试用**尚未入会**的人提交入会申请（`membership:request`），请使用一个在该沙盒中没有会员卡的账户登录，例如您自己的个人账户：非会员同样可以同意入会相关的权限。
:::

## 测试中创建的人员

通过沙盒的入会页面入会的人，以及测试客户端通过 `/v1/signup` 或 `/v1/enroll` 指定的人，都会成为沙盒的**虚构**人员：填写的地址会被替换为沙盒域名下的地址（`api-…@<slug>-sandbox.sandbox.invalid`，同一地址总是对应同一个），入会结束时页面会显示该地址。不会创建或触及任何真实账户，也不会发送任何电子邮件。

这些账户**仅在沙盒中有效**：可以用所选密码在沙盒中登录，但不能加入真实协会、进入其他协会，也不能授权除所在沙盒测试客户端以外的任何客户端（`sandbox_account`）。

## 测试客户端

测试环境中的客户端（机密客户端的凭据为 `vms_test_…`）绑定在沙盒上，显示在真实协会的管理后台中，**立即生效**，签发的令牌带有 `mode: "test"`。它无法触及真实协会。沙盒中的电子邮件不会发出。

要上线到生产环境，请在**生产**环境中再登记一个客户端（使用相同的 `https` 重定向 URI），待其开通后，在您的配置中更换 `clientId`：代码保持不变。

## 重置

在管理后台中点击“重建数据和登录凭据”，或使用测试客户端：

```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 — 会员从头重建，生成新密码
```

重置会重新创建六名虚构会员（包括同意记录和会话），并更换他们的密码；测试中创建的人员会被删除；客户端和沙盒本身保持不变。这些端点需要机密测试客户端的令牌（`client_credentials`），不接受 HTTP Basic；生产客户端会得到 `403`。

## 删除沙盒

在**开发者**页面中点击“删除沙盒”（理事会或平台运营人员）会立即删除沙盒，连同虚构会员、测试中创建的人员、数据和测试客户端，测试客户端将停止工作。您可以随时再创建一个新的沙盒。
