Certificates.cy.js 2.8 KB

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