You've already forked nginx-proxy-manager
							
							
				mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-10-30 18:05:34 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /// <reference types="cypress" />
 | |
| 
 | |
| describe('Certificates endpoints', () => {
 | |
| 	let token;
 | |
| 	let certID;
 | |
| 
 | |
| 	before(() => {
 | |
| 		cy.resetUsers();
 | |
| 		cy.getToken().then((tok) => {
 | |
| 			token = tok;
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| 	it('Validate custom certificate', () => {
 | |
| 		cy.task('backendApiPostFiles', {
 | |
| 			token: token,
 | |
| 			path:  '/api/nginx/certificates/validate',
 | |
| 			files:  {
 | |
| 				certificate: 'test.example.com.pem',
 | |
| 				certificate_key: 'test.example.com-key.pem',
 | |
| 			},
 | |
| 		}).then((data) => {
 | |
| 			cy.validateSwaggerSchema('post', 200, '/nginx/certificates/validate', data);
 | |
| 			expect(data).to.have.property('certificate');
 | |
| 			expect(data).to.have.property('certificate_key');
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| 	it('Custom certificate lifecycle', () => {
 | |
| 		// Create custom cert
 | |
| 		cy.task('backendApiPost', {
 | |
| 			token: token,
 | |
| 			path:  '/api/nginx/certificates',
 | |
| 			data:  {
 | |
| 				provider: "other",
 | |
| 				nice_name: "Test Certificate",
 | |
| 			},
 | |
| 		}).then((data) => {
 | |
| 			cy.validateSwaggerSchema('post', 201, '/nginx/certificates', data);
 | |
| 			expect(data).to.have.property('id');
 | |
| 			certID = data.id;
 | |
| 
 | |
| 			// Upload files
 | |
| 			cy.task('backendApiPostFiles', {
 | |
| 				token: token,
 | |
| 				path:  `/api/nginx/certificates/${certID}/upload`,
 | |
| 				files:  {
 | |
| 					certificate: 'test.example.com.pem',
 | |
| 					certificate_key: 'test.example.com-key.pem',
 | |
| 				},
 | |
| 			}).then((data) => {
 | |
| 				cy.validateSwaggerSchema('post', 200, '/nginx/certificates/{certID}/upload', data);
 | |
| 				expect(data).to.have.property('certificate');
 | |
| 				expect(data).to.have.property('certificate_key');
 | |
| 
 | |
| 				// Get all certs
 | |
| 				cy.task('backendApiGet', {
 | |
| 					token: token,
 | |
| 					path:  '/api/nginx/certificates?expand=owner'
 | |
| 				}).then((data) => {
 | |
| 					cy.validateSwaggerSchema('get', 200, '/nginx/certificates', data);
 | |
| 					expect(data.length).to.be.greaterThan(0);
 | |
| 
 | |
| 					// Delete cert
 | |
| 					cy.task('backendApiDelete', {
 | |
| 						token: token,
 | |
| 						path:  `/api/nginx/certificates/${certID}`
 | |
| 					}).then((data) => {
 | |
| 						cy.validateSwaggerSchema('delete', 200, '/nginx/certificates/{certID}', data);
 | |
| 						expect(data).to.be.equal(true);
 | |
| 					});
 | |
| 				});
 | |
| 			});
 | |
| 		});
 | |
| 	});
 | |
| 
 | |
| 	it('Request Certificate - CVE-2024-46256/CVE-2024-46257', () => {
 | |
| 		cy.task('backendApiPost', {
 | |
| 			token: token,
 | |
| 			path:  '/api/nginx/certificates',
 | |
| 			data:  {
 | |
| 				domain_names: ['test.com"||echo hello-world||\\\\n test.com"'],
 | |
| 				meta:         {
 | |
| 					dns_challenge: false,
 | |
| 				},
 | |
| 				provider: 'letsencrypt',
 | |
| 			},
 | |
| 			returnOnError: true,
 | |
| 		}).then((data) => {
 | |
| 			cy.validateSwaggerSchema('post', 400, '/nginx/certificates', data);
 | |
| 			expect(data).to.have.property('error');
 | |
| 			expect(data.error).to.have.property('message');
 | |
| 			expect(data.error).to.have.property('code');
 | |
| 			expect(data.error.code).to.equal(400);
 | |
| 			expect(data.error.message).to.contain('data/domain_names/0 must match pattern');
 | |
| 		});
 | |
| 	});
 | |
| });
 |