text: /* eslint-env mocha */
  
  const chai = require('chai');
  const request = require('supertest');
  const { getResource } = require('./util');
  const createApp = require('../src/app');
  
  const app = createApp();
  
  describe('GET /api/render', () => {
    it('request must have "url" query parameter', () =>
      request(app).get('/api/render').expect(400)
    );
  
    it('invalid cert should cause an error', () =>
      request(app)
        .get('/api/render')
        .query({
          url: 'https://self-signed.badssl.com/',
        })
        .expect(500)
    );
  
    it('invalid cert should not cause an error when ignoreHttpsErrors=true', () =>
      request(app)
        .get('/api/render')
        .query({
          url: 'https://self-signed.badssl.com/',
          ignoreHttpsErrors: true,
        })
        .expect(200)
    );
  });
  
  describe('POST /api/render', () => {
    it('body must have "url" attribute', () =>
      request(app)
        .post('/api/render')
        .send({
          pdf: { scale: 2 },
        })
        .set('content-type', 'application/json')
        .expect(400)
    );
  
    it('render google.com should succeed', () =>
      request(app)
        .post('/api/render')
        .send({ url: 'https://google.com' })
        .set('content-type', 'application/json')
        .expect(200)
        .expect('content-type', 'application/pdf')
        .then((response) => {
          const length = Number(response.headers['content-length']);
          chai.expect(length).to.be.above(1024 * 50);
        })
    );
  
    it('html in json body should succeed', () =>
      request(app)
        .post('/api/render')
        .send({ html: getResource('postmark-receipt.html') })
        .set('content-type', 'application/json')
        .expect(200)
        .expect('content-type', 'application/pdf')
        .then((response) => {
          const length = Number(response.headers['content-length']);
          chai.expect(length).to.be.above(1024 * 40);
        })
    );
  
    it('rendering large html should succeed', () =>
      request(app)
        .post('/api/render')
        .send(getResource('large.html'))
        .set('content-type', 'text/html')
        .expect(200)
        .expect('content-type', 'application/pdf')
        .then((response) => {
          const length = Number(response.headers['content-length']);
          chai.expect(length).to.be.above(1024 * 1024 * 1);
        })
    );
  
    it('html as text body should succeed', () =>
      request(app)
        .post('/api/render')
        .send(getResource('postmark-receipt.html'))
        .set('content-type', 'text/html')
        .expect(200)
        .expect('content-type', 'application/pdf')
        .then((response) => {
          const length = Number(response.headers['content-length']);
          chai.expect(length).to.be.above(1024 * 40);
        })
    );
  });
  