Я создаю серверную часть REST (node.js, хотя это и не важно для вопроса), где я аутентифицирую пользователей через Google Sign In.
Вот так выглядит аутентификация и создание пользовательских конечных точек в swagger (я удалил все остальные части для простоты):
openapi: 3.0.0
info:
version: 0.1.0
title: XXX API
servers:
- url: 'https://xxx.herokuapp.com/'
- url: 'http://localhost:5000/'
paths:
/auth:
post:
summary: Authenticate user
operationId: authUser
tags:
- auth
parameters:
- name: googleToken
in: query
required: true
schema:
$ref: '#/components/schemas/GoogleToken'
responses:
'200':
$ref: '#/components/responses/LoggedUser'
/users:
post:
summary: Create new user
operationId: createUser
tags:
- users
parameters:
- name: googleToken
in: query
required: true
schema:
$ref: '#/components/schemas/GoogleToken'
responses:
'201':
$ref: '#/components/responses/LoggedUser'
components:
schemas:
UserId:
type: string
GoogleToken:
type: string
User:
type: object
properties:
userId:
$ref: '#/components/schemas/UserId'
responses:
LoggedUser:
description: Successfully logged user
headers:
Auth-Token:
schema:
type: string
example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJP
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/User'
Как видите, я использую токен Google для аутентификации и создания пользователя. Как следует из документов, я использую токен Google для аутентификации пользователя и получения его идентификатора Google, электронной почты и т. Д. Вместо того, чтобы отправлять простые googleIds.
Чтобы защитить мой API от непредвиденных сбоев во время разработки, я обычно создаю функциональный тест с помощью таких сервисов, как Soap UI или Assertible. Там вы можете перечислить свои конечные точки и какие ответы вы ожидаете по заданным параметрам.
Проблема, с которой я сталкиваюсь, заключается в том, как программно имитировать вход в Google через мои тесты? У Facebook была функциональность для создания тестового пользователя ссылка , но, очевидно, я не могу найти такое же решение в Документах Google. Конечно, я могу получить один токен Google и жестко закодировать его, но срок его действия довольно короткий (несколько часов).
В нодовой библиотеке Google node.js есть один поток, но без правильного решения: поток github .
Любые предложения о том, как обойти эту проблему, очень приветствуются.
С уважением,