首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >devise-jwt在身份验证前生成令牌?

devise-jwt在身份验证前生成令牌?
EN

Stack Overflow用户
提问于 2021-09-03 23:42:28
回答 1查看 95关注 0票数 0

因此,我正在使用Cypress编写e2e自动化测试。为了使我的测试保持原子性,我尝试为该特定测试生成所需的数据。

因此,例如,我尝试从一个干净的数据库开始(运行迁移),并通过Cypress API请求生成一个用户。

问题是使用devise-jwt时,我需要发送auth:bearer令牌。这通常是在登录时生成的。这就是问题所在:要发出创建用户的POST请求,我需要在没有用户登录的情况下将令牌发送到authenticate....but,并获取令牌,因为我不知道令牌是什么。

我讨厌只有一个用户作为数据库的种子,因为我试图保持最小的依赖性,并尽可能地测试原子。有没有办法通过设计“获取/生成”身份验证令牌,并以某种方式在我的测试中使用它?

这是一个Rails/React应用程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-04 01:10:20

我不知道获取devise-jwt令牌的工作流程,但如果结果是cookie、sessionStorage或localStorage值,您可以使用cy.session()保存它。

代码语言:javascript
复制
Cypress.config('experimentalSessionSupport', true)

beforeEach(() => {                   
  cy.session('mySession', () => {

    // this "setup" callback is called once only, 
    // thereafter results are returned from cache

    // actions to seed database, get user data

    const window = cy.state('window')
    window.fetch(LOGIN_URL, dataWithLoginInfo).then(response => {
      const jwt = response.headers.get('Authorization').split('Bearer ')[1];
      window.sessionStorage.setItem('jwt', jwt)  // this is now cached - same token each time
    })
  })
})

it('uses jwt token', () => {
  const token =  cy.state('window').sessionStorage.getItem('jwt')
  const headers = { Authorization: `Bearer ${token}` }
  ...
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69051447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档