From 741edf77b88872cd95b70c0f43b8db9518719836 Mon Sep 17 00:00:00 2001 From: Jelmer van der Linde Date: Wed, 10 Aug 2022 13:55:58 +0100 Subject: [PATCH] Test case for fetch() integrity option. --- test/fetch/integrity.js | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 test/fetch/integrity.js diff --git a/test/fetch/integrity.js b/test/fetch/integrity.js new file mode 100644 index 00000000000..de149981615 --- /dev/null +++ b/test/fetch/integrity.js @@ -0,0 +1,52 @@ +'use strict' + +const { test } = require('tap') +const { createServer } = require('http') +const { fetch } = require('../..') + +test('request with correct integrity checksum', (t) => { + t.plan(1) + + const payload = { + body: 'Hello world!', + checksum: 'sha256-c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51a' + } + + const server = createServer((req, res) => { + res.end(payload.body) + }) + + t.teardown(server.close.bind(server)) + + server.listen(0, async () => { + const body = await fetch(`http://localhost:${server.address().port}`, { + integrity: payload.checksum + }) + t.strictSame(payload.body, await body.text()) + }) +}) + +test('request with wrong integrity checksum', (t) => { + t.plan(1) + + const payload = { + body: 'Hello world!', + checksum: 'sha256-c0535e4be2b79ffd93291305436bf889314e4a3faec05ecffcbb7df31ad9e51b' + } + + const server = createServer((req, res) => { + res.end(payload.body) + }) + + t.teardown(server.close.bind(server)) + + server.listen(0, () => { + fetch(`http://localhost:${server.address().port}`, { + integrity: payload.checksum + }).then(response => { + t.fail('fetch did not fail') + }).catch((err) => { + t.equal(err.cause.message, 'integrity mismatch') + }) + }) +})