Sak*_*dow 5 apollo graphql apollo-server
自从弃用以来,apollo-server-testing我正在使用与 apollo-server 进行集成测试的新方法(包含在 apollo-server 2.25.0 中)。从突变登录中,我在 OutgoingMessage 标头(在 中'Set-Cookie')中设置了刷新令牌。
@Mutation(() => RefreshTokenOutput)
async refreshToken(@Ctx() { response, contextRefreshToken }: Context): Promise<RefreshTokenOutput> {
if (contextRefreshToken) {
const { accessToken, refreshToken } = await this.authService.refreshToken(contextRefreshToken);
response.setHeader(
'Set-Cookie',
cookie.serialize('refreshToken', refreshToken, {
httpOnly: true,
maxAge: maxAge,
secure: true,
})
);
return { accessToken: accessToken };
} else {
throw new AuthenticationError();
}
}
Run Code Online (Sandbox Code Playgroud)
// given:
const { user, clearPassword } = await userLoader.createUser16c();
const input = new UserSigninInput();
input.email = user.email;
input.password = clearPassword;
const MUTATE_signin = gql`
mutation signin($userInput: UserSigninInput!) {
signin(input: $userInput) {
accessToken
}
}
`;
// when:
const res = await server.executeOperation(
{ query: MUTATE_signin, variables: { userInput: input }, operationName: 'signin' },
buildContext(user)
);
Run Code Online (Sandbox Code Playgroud)
我正在尝试测试此令牌是否设置正确且格式良好。您知道我如何使用 访问此标头吗executeOperation?
server.executeOperation 调用 processGraphQLRequest
processGraphQLRequest 返回类型是 GraphQLResponse
export interface GraphQLResponse {
data?: Record<string, any> | null;
errors?: ReadonlyArray<GraphQLFormattedError>;
extensions?: Record<string, any>;
http?: Pick<Response, 'headers'> & Partial<Pick<Mutable<Response>, 'status'>>;
}
Run Code Online (Sandbox Code Playgroud)
我不确定,但我认为 GraphQLResponse.http 中的标头
你可以在 github repo 中找到调用结构。
| 归档时间: |
|
| 查看次数: |
2785 次 |
| 最近记录: |