Certificates.cy.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /// <reference types="cypress" />
  2. describe('Certificates endpoints', () => {
  3. let token;
  4. let certID;
  5. before(() => {
  6. cy.resetUsers();
  7. cy.getToken().then((tok) => {
  8. token = tok;
  9. });
  10. });
  11. it('Validate custom certificate', () => {
  12. cy.task('backendApiPostFiles', {
  13. token: token,
  14. path: '/api/nginx/certificates/validate',
  15. files: {
  16. certificate: 'test.example.com.pem',
  17. certificate_key: 'test.example.com-key.pem',
  18. },
  19. }).then((data) => {
  20. cy.validateSwaggerSchema('post', 200, '/nginx/certificates/validate', data);
  21. expect(data).to.have.property('certificate');
  22. expect(data).to.have.property('certificate_key');
  23. });
  24. });
  25. it('Custom certificate lifecycle', () => {
  26. // Create custom cert
  27. cy.task('backendApiPost', {
  28. token: token,
  29. path: '/api/nginx/certificates',
  30. data: {
  31. provider: "other",
  32. nice_name: "Test Certificate",
  33. },
  34. }).then((data) => {
  35. cy.validateSwaggerSchema('post', 201, '/nginx/certificates', data);
  36. expect(data).to.have.property('id');
  37. certID = data.id;
  38. // Upload files
  39. cy.task('backendApiPostFiles', {
  40. token: token,
  41. path: `/api/nginx/certificates/${certID}/upload`,
  42. files: {
  43. certificate: 'test.example.com.pem',
  44. certificate_key: 'test.example.com-key.pem',
  45. },
  46. }).then((data) => {
  47. cy.validateSwaggerSchema('post', 200, '/nginx/certificates/{certID}/upload', data);
  48. expect(data).to.have.property('certificate');
  49. expect(data).to.have.property('certificate_key');
  50. // Get all certs
  51. cy.task('backendApiGet', {
  52. token: token,
  53. path: '/api/nginx/certificates?expand=owner'
  54. }).then((data) => {
  55. cy.validateSwaggerSchema('get', 200, '/nginx/certificates', data);
  56. expect(data.length).to.be.greaterThan(0);
  57. // Delete cert
  58. cy.task('backendApiDelete', {
  59. token: token,
  60. path: `/api/nginx/certificates/${certID}`
  61. }).then((data) => {
  62. cy.validateSwaggerSchema('delete', 200, '/nginx/certificates/{certID}', data);
  63. expect(data).to.be.equal(true);
  64. });
  65. });
  66. });
  67. });
  68. });
  69. it('Request Certificate - CVE-2024-46256/CVE-2024-46257', () => {
  70. cy.task('backendApiPost', {
  71. token: token,
  72. path: '/api/nginx/certificates',
  73. data: {
  74. domain_names: ['test.com"||echo hello-world||\\\\n test.com"'],
  75. meta: {
  76. dns_challenge: false,
  77. },
  78. provider: 'letsencrypt',
  79. },
  80. returnOnError: true,
  81. }).then((data) => {
  82. cy.validateSwaggerSchema('post', 400, '/nginx/certificates', data);
  83. expect(data).to.have.property('error');
  84. expect(data.error).to.have.property('message');
  85. expect(data.error).to.have.property('code');
  86. expect(data.error.code).to.equal(400);
  87. expect(data.error.message).to.contain('data/domain_names/0 must match pattern');
  88. });
  89. });
  90. });