Test Resolver в AWS AppSync с ключом API?

В настоящее время AWS AppSync предоставляет возможность добавить тестовый контекст, чтобы протестировать ваш преобразователь, чтобы убедиться, что все правильно. Однако, поскольку я использую API-ключ для аутентификации, я не уверен, как установить это в шаблоне сопоставления запросов, чтобы можно было запускать тестовый контекст, и я мог проверить правильность своего API (тем более, что это единственный auth, у которого нет раздела идентификации в тестовом контексте)? Кто-нибудь может помочь?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
611
1

Ответы 1

Вы правы в том, что режим авторизации ключа API не заполняет личность, даже когда вы вызываете свой API из клиента.

Однако вы все равно можете добавить объект идентификации в свой тестовый контекст. Для этого вам необходимо:

  1. Получите режим авторизации, который вы будете использовать в будущем (IAM, Cognito, OIDC).
  2. Найдите поля, которые предоставляет режим авторизации в ctx.identity. Вы можете найти это здесь: Справочник по контексту резолвера
  3. Добавьте эти поля в свой тестовый контекст. Например, контекст теста IAM может выглядеть так:

    { "личность": { "accountId": "моя учетная запись aws", "ognitoIdentityPoolId ":" строка ", "ognitoIdentityId ":" строка ", "sourceIp": ["строка"], "имя пользователя": "строка", "userArn": "строка" }, "arguments": {}, "источник": { "лямбда": "Привет, мир!", "testCtx": "Привет, мир!" }, "result": "Привет, мир!" }

Шаблон отображения запроса может выглядеть так:

{
    "account: "$ctx.identity.accountId"
}

и шаблон сопоставления оцененного запроса будет выглядеть следующим образом при запуске вашего тестового контекста:

{
    "account: "my aws account"
}

Примечание: вы также можете просто переключить свой API в режим авторизации, который вы планируете использовать, а затем попробовать запросы от имени вошедшего в систему пользователя.

спасибо за этот совет! Однако даже когда я меняю режим авторизации, когда я запускаю тест, шаблон сопоставления ответов становится нулевым? И я должен был запустить запрос, чтобы появился тестовый контекст?

C. Lewis 10.01.2019 15:35

Я бы не смог дать ответ на шаблон сопоставления ответов, возвращающий ноль, не увидев ваш шаблон сопоставления ответов. На странице преобразователя есть кнопка тестирования, которая проверяет преобразователь в вашем веб-браузере с использованием созданного вами тестового контекста. Если вы запустите запрос со страницы запроса консоли, ваш запрос будет отправлен в службу AppSync, контекст будет заполнен службой, и вы получите ответ после того, как ваш преобразователь будет запущен в службе.

Michael Willingham 11.01.2019 01:28

Другие вопросы по теме