commands.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // @flow
  2. import config from '../config.js'
  3. const identityUrl = `${config.coriolisUrl}identity/auth/tokens`
  4. const projectsUrl = `${config.coriolisUrl}identity/auth/projects`
  5. declare var expect: any
  6. Cypress.Commands.add('login', () => {
  7. let unscopedBody = {
  8. auth: {
  9. identity: {
  10. methods: ['password'],
  11. password: {
  12. user: {
  13. name: config.username,
  14. domain: { name: 'default' },
  15. password: config.password,
  16. },
  17. },
  18. },
  19. scope: 'unscoped',
  20. },
  21. }
  22. cy.request({
  23. method: 'POST',
  24. url: identityUrl,
  25. body: unscopedBody,
  26. }).then(unscopedResponse => {
  27. let unscopedToken = unscopedResponse.headers['x-subject-token']
  28. expect(unscopedToken).to.exist
  29. cy.request({
  30. method: 'GET',
  31. url: projectsUrl,
  32. headers: { 'X-Auth-Token': unscopedToken },
  33. }).then(projectsReponse => {
  34. let projectId = projectsReponse.body.projects[0].id
  35. expect(projectId).to.exist
  36. let scopedBody = {
  37. auth: {
  38. identity: {
  39. methods: ['token'],
  40. token: {
  41. id: unscopedToken,
  42. },
  43. },
  44. scope: {
  45. project: {
  46. id: projectId,
  47. },
  48. },
  49. },
  50. }
  51. cy.request({
  52. method: 'POST',
  53. url: identityUrl,
  54. body: scopedBody,
  55. }).then(scopedResponse => {
  56. let scopedToken = scopedResponse.headers['x-subject-token']
  57. expect(scopedToken).to.exist
  58. cy.setCookie('token', scopedToken)
  59. cy.setCookie('projectId', projectId)
  60. cy.visit(config.nodeServer)
  61. })
  62. })
  63. })
  64. })