mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
feat: move version checks to our own infrastructure (#27450)
This commit is contained in:
@@ -8,14 +8,9 @@ import { mockEnvData } from 'test/repositories/config.repository.mock';
|
||||
import { factory } from 'test/small.factory';
|
||||
import { newTestService, ServiceMocks } from 'test/utils';
|
||||
|
||||
const mockRelease = (version: string) => ({
|
||||
id: 1,
|
||||
url: 'https://api.github.com/repos/owner/repo/releases/1',
|
||||
tag_name: version,
|
||||
name: 'Release 1000',
|
||||
created_at: DateTime.utc().toISO(),
|
||||
const mockVersionResponse = (version: string) => ({
|
||||
version,
|
||||
published_at: DateTime.utc().toISO(),
|
||||
body: '',
|
||||
});
|
||||
|
||||
describe(VersionService.name, () => {
|
||||
@@ -101,7 +96,7 @@ describe(VersionService.name, () => {
|
||||
});
|
||||
|
||||
it('should run if it has been > 60 minutes', async () => {
|
||||
mocks.serverInfo.getGitHubRelease.mockResolvedValue(mockRelease('v100.0.0'));
|
||||
mocks.serverInfo.getLatestRelease.mockResolvedValue(mockVersionResponse('v100.0.0'));
|
||||
mocks.systemMetadata.get.mockResolvedValue({
|
||||
checkedAt: DateTime.utc().minus({ minutes: 65 }).toISO(),
|
||||
releaseVersion: '1.0.0',
|
||||
@@ -113,7 +108,7 @@ describe(VersionService.name, () => {
|
||||
});
|
||||
|
||||
it('should not notify if the version is equal', async () => {
|
||||
mocks.serverInfo.getGitHubRelease.mockResolvedValue(mockRelease(serverVersion.toString()));
|
||||
mocks.serverInfo.getLatestRelease.mockResolvedValue(mockVersionResponse(serverVersion.toString()));
|
||||
await expect(sut.handleVersionCheck()).resolves.toEqual(JobStatus.Success);
|
||||
expect(mocks.systemMetadata.set).toHaveBeenCalledWith(SystemMetadataKey.VersionCheckState, {
|
||||
checkedAt: expect.any(String),
|
||||
@@ -122,8 +117,8 @@ describe(VersionService.name, () => {
|
||||
expect(mocks.websocket.clientBroadcast).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle a github error', async () => {
|
||||
mocks.serverInfo.getGitHubRelease.mockRejectedValue(new Error('GitHub is down'));
|
||||
it('should handle a version check error', async () => {
|
||||
mocks.serverInfo.getLatestRelease.mockRejectedValue(new Error('Version service is down'));
|
||||
await expect(sut.handleVersionCheck()).resolves.toEqual(JobStatus.Failed);
|
||||
expect(mocks.systemMetadata.set).not.toHaveBeenCalled();
|
||||
expect(mocks.websocket.clientBroadcast).not.toHaveBeenCalled();
|
||||
|
||||
@@ -91,8 +91,7 @@ export class VersionService extends BaseService {
|
||||
}
|
||||
}
|
||||
|
||||
const { tag_name: releaseVersion, published_at: publishedAt } =
|
||||
await this.serverInfoRepository.getGitHubRelease();
|
||||
const { version: releaseVersion, published_at: publishedAt } = await this.serverInfoRepository.getLatestRelease();
|
||||
const metadata: VersionCheckMetadata = { checkedAt: DateTime.utc().toISO(), releaseVersion };
|
||||
|
||||
await this.systemMetadataRepository.set(SystemMetadataKey.VersionCheckState, metadata);
|
||||
|
||||
Reference in New Issue
Block a user