@@ -35,6 +35,11 @@ describe('core/providers/github', () => {
35
35
expect ( cred . signInMethod ) . to . eq ( SignInMethod . GITHUB ) ;
36
36
} ) ;
37
37
38
+ it ( 'generates Github provider' , ( ) => {
39
+ const provider = new GithubAuthProvider ( ) ;
40
+ expect ( provider . providerId ) . to . eq ( ProviderId . GITHUB ) ;
41
+ } ) ;
42
+
38
43
it ( 'credentialFromResult creates the cred from a tagged result' , async ( ) => {
39
44
const auth = await testAuth ( ) ;
40
45
const userCred = new UserCredentialImpl ( {
@@ -66,4 +71,65 @@ describe('core/providers/github', () => {
66
71
expect ( cred . providerId ) . to . eq ( ProviderId . GITHUB ) ;
67
72
expect ( cred . signInMethod ) . to . eq ( SignInMethod . GITHUB ) ;
68
73
} ) ;
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
+ } ) ;
69
135
} ) ;
0 commit comments