it('adds the errorMiddleware', async () => { const errorMiddlewares = [sinon.spy()]; gasket.exec.withArgs('errorMiddleware').resolves(errorMiddlewares); await plugin.hooks.createServers(gasket, {}); const errorMiddleware = findCall( app.use, (mw) => mw === errorMiddlewares[0]); assume(errorMiddleware).to.not.be.null(); });
it('does not add the compression middleware when disabled from gasket config', async () => { gasket.config.fastify = { compression: false }; await plugin.hooks.createServers(gasket, {}); const compressionUsage = findCall( app.use, mw => mw === compressionMiddleware); assume(compressionUsage).to.be.null(); });
it('doesnt throw if preset found', () => { let error; try { results = makeCreateContext(argv, flags); } catch (err) { error = err; } assume(error).to.be.falsey(); });
it('rejects with an Error about ports on failure (with https)', async () => { createServersModule.yields(errs.create({ https: { errno: 'EADDRINUSE' } })); await start(); assume(debugStub.args[0][0].message).to.match('Port is already in use'); assume(debugStub.args[0][1].https.errno).equals('EADDRINUSE'); });
it('adds a json helper to handlebars', async () => { await generateFiles(mockContext); assume(registerHelperStub).is.called(); assume(registerHelperStub.args[0][0]).to.eqls('json'); });
it('adds the compression middleware by default', async () => { await plugin.hooks.createServers(gasket, {}); const compressionUsage = findCall( app.use, mw => mw === compressionMiddleware); assume(compressionUsage).to.not.be.null(); });
it('does not create an HTTPS server if `https` is `null`', async () => { gasketAPI.config = { hostname: 'local.gasket.godaddy.com', http: 8080, https: null }; await start(); const createServerOpts = createServersModule.lastCall.args[0]; assume(createServerOpts).to.haveOwnProperty('http'); assume(createServerOpts).to.not.haveOwnProperty('https'); });
it('adds presetInfos to context', async () => { await loadPreset(mockContext); assume(mockContext).to.have.deep.property('presetInfos', [{ ...mockPkgs['@gasket/preset-bogus@^1.0.0'], from: 'cli', rawName: '@gasket/preset-bogus@^1.0.0', presets: [{ package: { name: '@gasket/preset-some', version: '1.0.1' }, from: '@gasket/preset-bogus', rawName: '@gasket/preset-some@1.0.1' }] }]); });
it('adds the cookie-parser middleware with a excluded path', async () => { gasket.config.fastify = { excludedRoutesRegex: /^(?!\/_next\/)/ }; await plugin.hooks.createServers(gasket, {}); const cookieParserUsage = findCall( app.use, (path, mw) => mw === cookieParserMiddleware); assume(cookieParserUsage).to.not.be.null(); });
it('config modifies urls to use zone with http', async () => { const zone = 'http://some-cdn.com/'; gasketAPI.config = { zone }; const results = await plugin.hooks.workbox(gasketAPI); assume(results.modifyURLPrefix).to.have.property('.next/', zone + '_next/'); });
it('supports multiple presets', async () => { mockContext.rawPresets = ['@gasket/preset-bogus@^1.0.0', '@gasket/preset-all-i-ever-wanted@^2.0.0']; await loadPreset(mockContext); assume(mockContext).to.have.deep.property('presets', ['@gasket/bogus', '@gasket/all-i-ever-wanted']); assume(mockContext.presetInfos).to.lengthOf(2); });
it('adds the cookie-parser middleware with a excluded path', async () => { gasket.config.express = { excludedRoutesRegex: /^(?!\/_next\/)/ }; await plugin.hooks.createServers(gasket, {}); const cookieParserUsage = findCall( app.use, (path, mw) => mw === cookieParserMiddleware); assume(cookieParserUsage).to.not.be.null(); });
it('config modifies urls to use assetPrefix with https but no trailing slash', async () => { const assetPrefix = 'https://some-cdn.com'; gasketAPI.config = { next: { assetPrefix } }; const results = await plugin.hooks.workbox(gasketAPI); assume(results.modifyURLPrefix).to.have.property('.next/', `${assetPrefix}/_next/`); });