From 9f9c864445af55551130947aad0f92cbdc37779c Mon Sep 17 00:00:00 2001 From: rowkav09 Date: Fri, 2 Oct 2026 03:42:25 +0100 Subject: [PATCH] Explain a GitHub sign-in that cannot reach GitHub Closes #1057 --- src/settings-onboarding-page.js | 2 +- test/settings-hosted-signin-unreachable.test.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/settings-hosted-signin-unreachable.test.js diff --git a/src/settings-onboarding-page.js b/src/settings-onboarding-page.js index 2763e014..3d4136b7 100644 --- a/src/settings-onboarding-page.js +++ b/src/settings-onboarding-page.js @@ -66,7 +66,7 @@ $('hosted-connect').addEventListener('click',async()=>{ if(generation!==hostedGeneration)return; hostedFlow=false; if(e.message==='invalid_url') $('hosted-address').setAttribute('aria-invalid','true'); - say('hosted-service-result','GitHub sign-in could not start: '+(e.message==='invalid_url'?'Enter an HTTPS card service address. Use HTTP only for localhost, 127.0.0.1 or [::1].':e.message==='no_credential_store'?'This installation cannot store sign-in credentials. GitHub sign-in is unavailable.':e.message==='not_configured'?'GitHub sign-in is not configured in this installation.':e.message)); + say('hosted-service-result','GitHub sign-in could not start: '+(e.message==='invalid_url'?'Enter an HTTPS card service address. Use HTTP only for localhost, 127.0.0.1 or [::1].':e.message==='no_credential_store'?'This installation cannot store sign-in credentials. GitHub sign-in is unavailable.':e.message==='not_configured'?'GitHub sign-in is not configured in this installation.':e.message==='unreachable'?'Could not reach GitHub. Check your connection and try again.':e.message)); } finally { if(generation===hostedGeneration)hostedStarting=false; } }); async function pollHosted(generation){ diff --git a/test/settings-hosted-signin-unreachable.test.js b/test/settings-hosted-signin-unreachable.test.js new file mode 100644 index 00000000..b0ba2b14 --- /dev/null +++ b/test/settings-hosted-signin-unreachable.test.js @@ -0,0 +1,10 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import {runInNewContext} from 'node:vm'; +import {SERVICE_SCRIPT} from '../src/settings-onboarding-page.js'; +test('GitHub sign-in explains that GitHub could not be reached',async()=>{ + const nodes=new Map();const get=id=>{if(!nodes.has(id))nodes.set(id,{value:'https://cards.example',hidden:true,setAttribute(k,v){this[k]=v},addEventListener(k,fn){this[k]=fn},replaceChildren(){}});return nodes.get(id)}; + runInNewContext(SERVICE_SCRIPT,{document:{getElementById:get},fetch:async path=>path==='/api/settings/services'?{ok:true,json:async()=>({spotify:null,hosted:{url:'https://cards.example'}})}:{ok:false,json:async()=>({status:'unreachable'})},performance:{now:()=>0},setTimeout(){}}); + await new Promise(r=>setImmediate(r));await get('hosted-connect').click(); + assert.equal(get('hosted-service-result').textContent,'GitHub sign-in could not start: Could not reach GitHub. Check your connection and try again.'); +});