2021-02-19 11:13:25 +01:00
|
|
|
const fetchMock = require('fetch-mock').sandbox();
|
|
|
|
const stores = require('../../test/fixtures/store');
|
|
|
|
const getLogger = require('../../test/fixtures/no-logger');
|
|
|
|
const version = require('../util/version');
|
|
|
|
|
2021-05-28 11:10:24 +02:00
|
|
|
jest.mock('node-fetch', () => fetchMock);
|
|
|
|
|
|
|
|
const VersionService = require('./version-service');
|
2021-02-19 11:13:25 +01:00
|
|
|
|
2021-05-28 11:10:24 +02:00
|
|
|
test('yields current versions', async () => {
|
2021-02-19 11:13:25 +01:00
|
|
|
const testurl = 'https://version.test';
|
|
|
|
const { settingStore } = stores.createStores();
|
|
|
|
await settingStore.insert({
|
|
|
|
name: 'instanceInfo',
|
|
|
|
content: { id: '1234abc' },
|
|
|
|
});
|
|
|
|
const latest = {
|
2021-04-22 10:07:10 +02:00
|
|
|
oss: '5.0.0',
|
|
|
|
enterprise: '5.0.0',
|
2021-02-19 11:13:25 +01:00
|
|
|
};
|
|
|
|
fetchMock.mock(
|
|
|
|
{ url: testurl, method: 'POST' },
|
|
|
|
{
|
|
|
|
latest: false,
|
|
|
|
versions: latest,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
const service = new VersionService(
|
|
|
|
{ settingStore },
|
2021-04-22 10:07:10 +02:00
|
|
|
{ getLogger, versionCheck: { url: testurl, enable: true } },
|
2021-02-19 11:13:25 +01:00
|
|
|
);
|
|
|
|
await service.checkLatestVersion();
|
|
|
|
fetchMock.done();
|
|
|
|
const versionInfo = service.getVersionInfo();
|
2021-05-28 11:10:24 +02:00
|
|
|
expect(versionInfo.current.oss).toBe(version);
|
|
|
|
expect(versionInfo.current.enterprise).toBeFalsy();
|
|
|
|
expect(versionInfo.latest.oss).toBe(latest.oss);
|
|
|
|
expect(versionInfo.latest.enterprise).toBe(latest.enterprise);
|
2021-02-19 11:13:25 +01:00
|
|
|
});
|
|
|
|
|
2021-05-28 11:10:24 +02:00
|
|
|
test('supports setting enterprise version as well', async () => {
|
2021-02-19 11:13:25 +01:00
|
|
|
const testurl = `https://version.test${Math.random() * 1000}`;
|
|
|
|
const { settingStore } = stores.createStores();
|
|
|
|
const enterpriseVersion = '3.7.0';
|
|
|
|
await settingStore.insert({
|
|
|
|
name: 'instanceInfo',
|
|
|
|
content: { id: '1234abc' },
|
|
|
|
});
|
|
|
|
const latest = {
|
|
|
|
oss: '4.0.0',
|
|
|
|
enterprise: '4.0.0',
|
|
|
|
};
|
|
|
|
fetchMock.mock(
|
|
|
|
{ url: testurl, method: 'POST' },
|
|
|
|
{
|
|
|
|
latest: false,
|
|
|
|
versions: latest,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
const service = new VersionService(
|
|
|
|
{ settingStore },
|
|
|
|
{
|
|
|
|
getLogger,
|
2021-04-22 10:07:10 +02:00
|
|
|
versionCheck: { url: testurl, enable: true },
|
2021-02-19 11:13:25 +01:00
|
|
|
version,
|
2021-04-23 11:05:25 +02:00
|
|
|
enterpriseVersion,
|
2021-02-19 11:13:25 +01:00
|
|
|
},
|
|
|
|
);
|
|
|
|
await service.checkLatestVersion();
|
|
|
|
fetchMock.done();
|
|
|
|
const versionInfo = service.getVersionInfo();
|
2021-05-28 11:10:24 +02:00
|
|
|
expect(versionInfo.current.oss).toBe(version);
|
|
|
|
expect(versionInfo.current.enterprise).toBe(enterpriseVersion);
|
|
|
|
expect(versionInfo.latest.oss).toBe(latest.oss);
|
|
|
|
expect(versionInfo.latest.enterprise).toBe(latest.enterprise);
|
2021-02-19 11:13:25 +01:00
|
|
|
});
|
|
|
|
|
2021-05-28 11:10:24 +02:00
|
|
|
test('if version check is not enabled should not make any calls', async () => {
|
|
|
|
const testurl = `https://version.test${Math.random() * 1000}`;
|
|
|
|
const { settingStore } = stores.createStores();
|
|
|
|
const enterpriseVersion = '3.7.0';
|
|
|
|
await settingStore.insert({
|
|
|
|
name: 'instanceInfo',
|
|
|
|
content: { id: '1234abc' },
|
|
|
|
});
|
|
|
|
const latest = {
|
|
|
|
oss: '4.0.0',
|
|
|
|
enterprise: '4.0.0',
|
|
|
|
};
|
|
|
|
fetchMock.mock(
|
|
|
|
{ url: testurl, method: 'POST' },
|
|
|
|
{
|
|
|
|
latest: false,
|
|
|
|
versions: latest,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
const service = new VersionService(
|
|
|
|
{ settingStore },
|
|
|
|
{
|
|
|
|
getLogger,
|
|
|
|
versionCheck: { url: testurl, enable: false },
|
|
|
|
version,
|
|
|
|
enterpriseVersion,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
await service.checkLatestVersion();
|
|
|
|
expect(fetchMock.called(testurl)).toBe(false);
|
|
|
|
const versionInfo = service.getVersionInfo();
|
|
|
|
expect(versionInfo.current.oss).toBe(version);
|
|
|
|
expect(versionInfo.current.enterprise).toBe(enterpriseVersion);
|
|
|
|
expect(versionInfo.latest.oss).toBeFalsy();
|
|
|
|
expect(versionInfo.latest.enterprise).toBeFalsy();
|
|
|
|
});
|