|
| 1 | +'use strict' |
| 2 | +const { describe, it, before, beforeEach, after } = require('mocha') |
| 3 | +const { expect } = require('chai') |
| 4 | +const { URL } = require('url') |
| 5 | +const browser = require('sinon-chrome') |
| 6 | +const { initState } = require('../../../add-on/src/lib/state') |
| 7 | +const createRuntimeChecks = require('../../../add-on/src/lib/runtime-checks') |
| 8 | +const { createRequestModifier } = require('../../../add-on/src/lib/ipfs-request') |
| 9 | +const createDnslinkResolver = require('../../../add-on/src/lib/dnslink') |
| 10 | +const { createIpfsPathValidator } = require('../../../add-on/src/lib/ipfs-path') |
| 11 | +const { optionDefaults } = require('../../../add-on/src/lib/options') |
| 12 | + |
| 13 | +// const nodeTypes = ['external', 'embedded'] |
| 14 | + |
| 15 | +describe('modifyRequest processing', function () { |
| 16 | + let state, dnslinkResolver, ipfsPathValidator, modifyRequest, runtime |
| 17 | + |
| 18 | + before(function () { |
| 19 | + global.URL = URL |
| 20 | + global.browser = browser |
| 21 | + }) |
| 22 | + |
| 23 | + beforeEach(async function () { |
| 24 | + state = initState(optionDefaults) |
| 25 | + const getState = () => state |
| 26 | + dnslinkResolver = createDnslinkResolver(getState) |
| 27 | + runtime = Object.assign({}, await createRuntimeChecks(browser)) // make it mutable for tests |
| 28 | + ipfsPathValidator = createIpfsPathValidator(getState, dnslinkResolver) |
| 29 | + modifyRequest = createRequestModifier(getState, dnslinkResolver, ipfsPathValidator, runtime) |
| 30 | + }) |
| 31 | + |
| 32 | + describe('a request to <apiURL>/api/v0/add with stream-channels=true', function () { |
| 33 | + const expectHeader = { name: 'Expect', value: '100-continue' } |
| 34 | + it('should apply the "Expect: 100-continue" fix for https://github.com/ipfs/go-ipfs/issues/5168 ', function () { |
| 35 | + const request = { |
| 36 | + method: 'POST', |
| 37 | + requestHeaders: [ |
| 38 | + { name: 'Content-Type', value: 'multipart/form-data; boundary=--------------------------015695779813832455524979' } |
| 39 | + ], |
| 40 | + type: 'xmlhttprequest', |
| 41 | + url: `${state.apiURLString}api/v0/add?progress=true&wrapWithDirectory=true&pin=true&wrap-with-directory=true&stream-channels=true` |
| 42 | + } |
| 43 | + expect(modifyRequest.onBeforeSendHeaders(request).requestHeaders).to.deep.include(expectHeader) |
| 44 | + }) |
| 45 | + }) |
| 46 | + |
| 47 | + describe('a request to <apiURL>/api/v0/ with Origin=null', function () { |
| 48 | + it('should remove Origin header ', function () { |
| 49 | + const bogusOriginHeader = { name: 'Origin', value: 'null' } |
| 50 | + const request = { |
| 51 | + requestHeaders: [ bogusOriginHeader ], |
| 52 | + type: 'xmlhttprequest', |
| 53 | + url: `${state.apiURLString}api/v0/id` |
| 54 | + } |
| 55 | + expect(modifyRequest.onBeforeSendHeaders(request).requestHeaders).to.not.include(bogusOriginHeader) |
| 56 | + }) |
| 57 | + }) |
| 58 | + |
| 59 | + after(function () { |
| 60 | + delete global.URL |
| 61 | + delete global.browser |
| 62 | + browser.flush() |
| 63 | + }) |
| 64 | +}) |
0 commit comments