From b42163c733d7d2c2f7aed8031f6f799409b7f11d Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Fri, 23 Jan 2026 11:43:41 +0100 Subject: [PATCH 1/2] feat(observatory): restart github monitoring --- src/observatory/src/openid/scheduler.rs | 4 ++-- .../observatory.openid.upgrade.spec.ts | 24 ++++++++++++++----- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/observatory/src/openid/scheduler.rs b/src/observatory/src/openid/scheduler.rs index 1d719be73..be0a668c3 100644 --- a/src/observatory/src/openid/scheduler.rs +++ b/src/observatory/src/openid/scheduler.rs @@ -9,7 +9,7 @@ use std::time::Duration; pub fn defer_restart_monitoring() { // Early spare one timer if no scheduler is enabled. - let enabled_count = [OpenIdProvider::Google] + let enabled_count = [OpenIdProvider::Google, OpenIdProvider::GitHub] .into_iter() .filter(|provider| is_scheduler_enabled(provider)) .count(); @@ -24,7 +24,7 @@ pub fn defer_restart_monitoring() { } async fn restart_monitoring() { - for provider in [OpenIdProvider::Google] { + for provider in [OpenIdProvider::Google, OpenIdProvider::GitHub] { schedule_certificate_update(provider, None); } } diff --git a/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts b/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts index 3730fbd3f..8caacc084 100644 --- a/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts +++ b/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts @@ -4,7 +4,10 @@ import { fromNullable } from '@dfinity/utils'; import { Ed25519KeyIdentity } from '@icp-sdk/core/identity'; import type { Principal } from '@icp-sdk/core/principal'; import { inject } from 'vitest'; -import { GOOGLE_OPEN_ID_PROVIDER } from '../../constants/auth-tests.constants'; +import { + GITHUB_OPEN_ID_PROVIDER, + GOOGLE_OPEN_ID_PROVIDER +} from '../../constants/auth-tests.constants'; import { mockCertificateDate, mockGoogleClientId } from '../../mocks/jwt.mocks'; import { FETCH_CERTIFICATE_INTERVAL } from '../../mocks/observatory.mocks'; import { makeMockGoogleOpenIdJwt } from '../../utils/jwt-tests.utils'; @@ -67,7 +70,16 @@ describe('Observatory > OpenId > Upgrade', async () => { expect(fromNullable(cert)).toBeUndefined(); }; - describe('Google certificate', () => { + describe.each([ + { + title: 'Google', + provider: GOOGLE_OPEN_ID_PROVIDER + }, + { + title: 'Github', + provider: GITHUB_OPEN_ID_PROVIDER + } + ])('$title', ({ provider }) => { it('should not start monitoring after upgrade if never stopped', async () => { await upgradeCurrent(); @@ -79,7 +91,7 @@ describe('Observatory > OpenId > Upgrade', async () => { it('should not start monitoring after upgrade if stopped', async () => { const { start_openid_monitoring, stop_openid_monitoring } = actor; - await start_openid_monitoring(GOOGLE_OPEN_ID_PROVIDER); + await start_openid_monitoring(provider); // HTTPs outcalls after stat await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); @@ -87,7 +99,7 @@ describe('Observatory > OpenId > Upgrade', async () => { await pic.advanceTime(1000); await tick(pic); - await stop_openid_monitoring(GOOGLE_OPEN_ID_PROVIDER); + await stop_openid_monitoring(provider); await pic.advanceTime(FETCH_CERTIFICATE_INTERVAL + 1000); @@ -106,7 +118,7 @@ describe('Observatory > OpenId > Upgrade', async () => { it('should still hold certificate after upgrade', async () => { const { start_openid_monitoring } = actor; - await start_openid_monitoring(GOOGLE_OPEN_ID_PROVIDER); + await start_openid_monitoring(provider); // HTTPs outcalls after stat await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); @@ -125,7 +137,7 @@ describe('Observatory > OpenId > Upgrade', async () => { it('should restart monitoring after upgrade if running', async () => { const { start_openid_monitoring } = actor; - await start_openid_monitoring(GOOGLE_OPEN_ID_PROVIDER); + await start_openid_monitoring(provider); // HTTPs outcalls after stat await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); From e7c3aefb4706e8b9306d03e933d526e7d0a10852 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Fri, 23 Jan 2026 12:42:55 +0100 Subject: [PATCH 2/2] test: use method for outcalls --- .../observatory.openid.upgrade.spec.ts | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts b/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts index 8caacc084..51f16dcc1 100644 --- a/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts +++ b/src/tests/specs/observatory/observatory.openid.upgrade.spec.ts @@ -72,14 +72,14 @@ describe('Observatory > OpenId > Upgrade', async () => { describe.each([ { - title: 'Google', + method: 'google', provider: GOOGLE_OPEN_ID_PROVIDER }, { - title: 'Github', + method: 'github', provider: GITHUB_OPEN_ID_PROVIDER } - ])('$title', ({ provider }) => { + ])('$method', ({ method, provider }) => { it('should not start monitoring after upgrade if never stopped', async () => { await upgradeCurrent(); @@ -94,7 +94,11 @@ describe('Observatory > OpenId > Upgrade', async () => { await start_openid_monitoring(provider); // HTTPs outcalls after stat - await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); + await assertOpenIdHttpsOutcalls({ + pic, + jwks: mockJwks, + method: method as 'google' | 'github' + }); await pic.advanceTime(1000); await tick(pic); @@ -104,7 +108,11 @@ describe('Observatory > OpenId > Upgrade', async () => { await pic.advanceTime(FETCH_CERTIFICATE_INTERVAL + 1000); // Delayed HTTPs outcalls which happens after stop - await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); + await assertOpenIdHttpsOutcalls({ + pic, + jwks: mockJwks, + method: method as 'google' | 'github' + }); await expect(pic.getPendingHttpsOutcalls()).resolves.toHaveLength(0); @@ -121,14 +129,18 @@ describe('Observatory > OpenId > Upgrade', async () => { await start_openid_monitoring(provider); // HTTPs outcalls after stat - await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); + await assertOpenIdHttpsOutcalls({ + pic, + jwks: mockJwks, + method: method as 'google' | 'github' + }); await upgradeCurrent(); const { get_openid_certificate } = actor; const cert = await get_openid_certificate({ - provider: { Google: null } + provider }); expect(fromNullable(cert)).not.toBeUndefined(); @@ -140,7 +152,11 @@ describe('Observatory > OpenId > Upgrade', async () => { await start_openid_monitoring(provider); // HTTPs outcalls after stat - await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); + await assertOpenIdHttpsOutcalls({ + pic, + jwks: mockJwks, + method: method as 'google' | 'github' + }); await upgradeCurrent(); @@ -150,7 +166,11 @@ describe('Observatory > OpenId > Upgrade', async () => { await expect(pic.getPendingHttpsOutcalls()).resolves.toHaveLength(1); // HTTPs outcalls after restat - await assertOpenIdHttpsOutcalls({ pic, jwks: mockJwks }); + await assertOpenIdHttpsOutcalls({ + pic, + jwks: mockJwks, + method: method as 'google' | 'github' + }); }); }); });