diff --git a/.changeset/rude-monkeys-pay.md b/.changeset/rude-monkeys-pay.md new file mode 100644 index 00000000000..a9e0c7473f0 --- /dev/null +++ b/.changeset/rude-monkeys-pay.md @@ -0,0 +1,5 @@ +--- +'@apollo/server': patch +--- + +Add missing `nonce` on `script` tag for non-embedded landing page diff --git a/packages/server/src/__tests__/plugin/landingPage/plugin.test.ts b/packages/server/src/__tests__/plugin/landingPage/plugin.test.ts index f38fa91ea01..5ce3e434d57 100644 --- a/packages/server/src/__tests__/plugin/landingPage/plugin.test.ts +++ b/packages/server/src/__tests__/plugin/landingPage/plugin.test.ts @@ -1,5 +1,8 @@ import { ApolloServer, HeaderMap } from '@apollo/server'; -import { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default'; +import { + ApolloServerPluginLandingPageLocalDefault, + ApolloServerPluginLandingPageProductionDefault, +} from '@apollo/server/plugin/landingPage/default'; import { describe, expect, test } from '@jest/globals'; import assert from 'assert'; import { mockLogger } from '../../mockLogger'; @@ -61,4 +64,16 @@ describe('ApolloServerPluginLandingPageDefault', () => { ); await server.stop(); }); + + test(`nonce exists in non-embedded landing page`, async () => { + const plugin = ApolloServerPluginLandingPageProductionDefault({ + embed: false, + }); + + // @ts-ignore not passing things to `serverWillStart` + const { renderLandingPage } = await plugin.serverWillStart?.({}); + const landingPageHtml = await (await renderLandingPage?.()).html(); + + expect(landingPageHtml).toMatch(/ + `;