| 'use strict'; |
| |
| const assert = require('assert'); |
| require('../tools/js/v3-models.js'); |
| const BrowserPrivilegedAPI = require('../public/v3/privileged-api.js').PrivilegedAPI; |
| const MockRemoteAPI = require('./resources/mock-remote-api.js').MockRemoteAPI; |
| const assertThrows = require('../server-tests/resources/common-operations').assertThrows; |
| |
| const manifestSampleResponse = { |
| siteTitle: 'some title', |
| all: {}, |
| bugTrackers: {}, |
| builders: {}, |
| dashboard: {}, |
| dashboards: {}, |
| fileUploadSizeLimit: 1, |
| maxRootReuseAgeInDays: null, |
| metrics: {}, |
| platformGroups: {}, |
| repositories: {}, |
| testAgeToleranceInHours: null, |
| tests: {}, |
| triggerables: {}, |
| summaryPages: [], |
| status: 'OK' |
| } |
| |
| describe('Manifest', () => { |
| const requests = MockRemoteAPI.inject('https://perf.webkit.org', BrowserPrivilegedAPI); |
| |
| describe('fetchRawResponse', () => { |
| it('should fetch from "/data/manifest.json" if the file is available', async () => { |
| const fetchingTask = Manifest.fetchRawResponse(); |
| assert.equal(requests.length, 1); |
| assert(requests[0].url, '/data/manifest.json') |
| requests[0].resolve(manifestSampleResponse); |
| |
| const rawResponse = await fetchingTask; |
| assert.deepEqual(rawResponse, manifestSampleResponse); |
| }); |
| |
| it('should fetch from api only when fetching "/data/manifest.json" returns 404', async () => { |
| const fetchingTask = Manifest.fetchRawResponse(); |
| assert.equal(requests.length, 1); |
| assert(requests[0].url, '/data/manifest.json') |
| requests[0].reject(404); |
| |
| await MockRemoteAPI.waitForRequest(); |
| assert.equal(requests.length, 2); |
| assert(requests[1].url, '/data/manifest.json') |
| requests[1].resolve(manifestSampleResponse); |
| |
| const rawResponse = await fetchingTask; |
| assert.deepEqual(rawResponse, manifestSampleResponse); |
| }); |
| |
| it('should not fetch from api if fetching "/data/manifest.json" returns non-404', async () => { |
| const fetchingTask = Manifest.fetchRawResponse(); |
| assert.equal(requests.length, 1); |
| assert(requests[0].url, '/data/manifest.json') |
| requests[0].reject(301); |
| assertThrows('Failed to fetch manifest.json with 301', () => fetchingTask); |
| }); |
| }); |
| }); |