@@ -35,6 +35,11 @@ describe('core/providers/github', () => {
3535    expect ( cred . signInMethod ) . to . eq ( SignInMethod . GITHUB ) ; 
3636  } ) ; 
3737
38+   it ( 'generates Github provider' ,  ( )  =>  { 
39+     const  provider  =  new  GithubAuthProvider ( ) ; 
40+     expect ( provider . providerId ) . to . eq ( ProviderId . GITHUB ) ; 
41+   } ) ; 
42+ 
3843  it ( 'credentialFromResult creates the cred from a tagged result' ,  async  ( )  =>  { 
3944    const  auth  =  await  testAuth ( ) ; 
4045    const  userCred  =  new  UserCredentialImpl ( { 
@@ -66,4 +71,65 @@ describe('core/providers/github', () => {
6671    expect ( cred . providerId ) . to . eq ( ProviderId . GITHUB ) ; 
6772    expect ( cred . signInMethod ) . to . eq ( SignInMethod . GITHUB ) ; 
6873  } ) ; 
74+ 
75+   it ( 'returns null when _tokenResponse is missing' ,  ( )  =>  { 
76+     const  error  =  _createError ( AuthErrorCode . NEED_CONFIRMATION ,  { 
77+       appName : 'foo' 
78+     } ) ; 
79+     error . customData  =  { } ;  // no _tokenResponse 
80+ 
81+     const  cred  =  GithubAuthProvider . credentialFromError ( error ) ; 
82+     expect ( cred ) . to . be . null ; 
83+   } ) ; 
84+ 
85+   it ( 'returns null when _tokenResponse is missing oauthAccessToken key' ,  ( )  =>  { 
86+     const  error  =  _createError ( AuthErrorCode . NEED_CONFIRMATION ,  { 
87+       appName : 'foo' 
88+     } ) ; 
89+     error . customData  =  { 
90+       _tokenResponse : { 
91+         // intentionally missing oauthAccessToken 
92+         idToken : 'some-id-token' , 
93+         oauthAccessToken : null 
94+       } 
95+     } ; 
96+ 
97+     const  cred  =  GithubAuthProvider . credentialFromError ( error ) ; 
98+     expect ( cred ) . to . be . null ; 
99+   } ) ; 
100+ 
101+   it ( 'returns null when GithubAuthProvider.credential throws' ,  ( )  =>  { 
102+     // Temporarily stub credential method to throw 
103+     const  original  =  GithubAuthProvider . credential ; 
104+     GithubAuthProvider . credential  =  ( )  =>  { 
105+       throw  new  Error ( 'Simulated failure' ) ; 
106+     } ; 
107+ 
108+     const  error  =  _createError ( AuthErrorCode . NEED_CONFIRMATION ,  { 
109+       appName : 'foo' 
110+     } ) ; 
111+     error . customData  =  { 
112+       _tokenResponse : { 
113+         oauthAccessToken : 'valid-token' 
114+       } 
115+     } ; 
116+ 
117+     const  cred  =  GithubAuthProvider . credentialFromError ( error ) ; 
118+     expect ( cred ) . to . be . null ; 
119+ 
120+     // Restore original method 
121+     GithubAuthProvider . credential  =  original ; 
122+   } ) ; 
123+ 
124+   it ( 'returns null when error.customData is undefined (falls back to empty object)' ,  ( )  =>  { 
125+     const  error  =  _createError ( AuthErrorCode . NEED_CONFIRMATION ,  { 
126+       appName : 'foo' 
127+     } ) ; 
128+ 
129+     // Don't set `customData` at all → fallback to {} 
130+     delete  ( error  as  any ) . customData ; 
131+ 
132+     const  cred  =  GithubAuthProvider . credentialFromError ( error ) ; 
133+     expect ( cred ) . to . be . null ; 
134+   } ) ; 
69135} ) ; 
0 commit comments