@@ -40,59 +40,59 @@ type Provider = {
40
40
[ K in keyof LoginProviders ] : LoginProviders [ K ]
41
41
} [ keyof LoginProviders ]
42
42
43
- interface Case {
44
- provider : Provider
45
- name : string
46
- providers : Array < EnterpriseLoginProviders >
47
- to : string
48
- }
49
-
50
- const cases : Case [ ] = [
51
- {
52
- provider : LoginProvidersEnum . BITBUCKET ,
53
- name : LoginProvidersEnum . BITBUCKET . name ,
54
- providers : [ 'BITBUCKET' ] ,
55
- to : '/login/bb' ,
56
- } ,
57
- {
58
- provider : LoginProvidersEnum . BITBUCKET ,
59
- name : LoginProvidersEnum . BITBUCKET . selfHostedName ,
60
- providers : [ 'BITBUCKET_SERVER' ] ,
61
- to : '/login/bbs' ,
62
- } ,
63
- {
64
- provider : LoginProvidersEnum . GITHUB ,
65
- name : LoginProvidersEnum . GITHUB . name ,
66
- providers : [ 'GITHUB' ] ,
67
- to : '/login/gh' ,
68
- } ,
69
- {
70
- provider : LoginProvidersEnum . GITHUB ,
71
- name : LoginProvidersEnum . GITHUB . selfHostedName ,
72
- providers : [ 'GITHUB_ENTERPRISE' ] ,
73
- to : '/login/ghe' ,
74
- } ,
75
- {
76
- provider : LoginProvidersEnum . GITLAB ,
77
- name : LoginProvidersEnum . GITLAB . name ,
78
- providers : [ 'GITLAB' ] ,
79
- to : '/login/gl' ,
80
- } ,
81
- {
82
- provider : LoginProvidersEnum . GITLAB ,
83
- name : LoginProvidersEnum . GITLAB . selfHostedName ,
84
- providers : [ 'GITLAB_ENTERPRISE' ] ,
85
- to : '/login/gle' ,
86
- } ,
87
- {
88
- provider : LoginProvidersEnum . OKTA ,
89
- name : LoginProvidersEnum . OKTA . name ,
90
- providers : [ 'OKTA' ] ,
91
- to : '/login/okta' ,
92
- } ,
93
- ]
94
-
95
43
describe ( 'ProviderCard' , ( ) => {
44
+ interface Case {
45
+ provider : Provider
46
+ name : string
47
+ providers : Array < EnterpriseLoginProviders >
48
+ to : string
49
+ }
50
+
51
+ const cases : Case [ ] = [
52
+ {
53
+ provider : LoginProvidersEnum . BITBUCKET ,
54
+ name : LoginProvidersEnum . BITBUCKET . name ,
55
+ providers : [ 'BITBUCKET' ] ,
56
+ to : '/login/bb' ,
57
+ } ,
58
+ {
59
+ provider : LoginProvidersEnum . BITBUCKET ,
60
+ name : LoginProvidersEnum . BITBUCKET . selfHostedName ,
61
+ providers : [ 'BITBUCKET_SERVER' ] ,
62
+ to : '/login/bbs' ,
63
+ } ,
64
+ {
65
+ provider : LoginProvidersEnum . GITHUB ,
66
+ name : LoginProvidersEnum . GITHUB . name ,
67
+ providers : [ 'GITHUB' ] ,
68
+ to : '/login/gh' ,
69
+ } ,
70
+ {
71
+ provider : LoginProvidersEnum . GITHUB ,
72
+ name : LoginProvidersEnum . GITHUB . selfHostedName ,
73
+ providers : [ 'GITHUB_ENTERPRISE' ] ,
74
+ to : '/login/ghe' ,
75
+ } ,
76
+ {
77
+ provider : LoginProvidersEnum . GITLAB ,
78
+ name : LoginProvidersEnum . GITLAB . name ,
79
+ providers : [ 'GITLAB' ] ,
80
+ to : '/login/gl' ,
81
+ } ,
82
+ {
83
+ provider : LoginProvidersEnum . GITLAB ,
84
+ name : LoginProvidersEnum . GITLAB . selfHostedName ,
85
+ providers : [ 'GITLAB_ENTERPRISE' ] ,
86
+ to : '/login/gle' ,
87
+ } ,
88
+ {
89
+ provider : LoginProvidersEnum . OKTA ,
90
+ name : LoginProvidersEnum . OKTA . name ,
91
+ providers : [ 'OKTA' ] ,
92
+ to : '/login/okta' ,
93
+ } ,
94
+ ]
95
+
96
96
describe . each ( cases ) ( '$name' , ( { provider, providers, to, name } ) => {
97
97
describe ( 'when system is configured with $providers.[0]' , ( ) => {
98
98
it ( 'renders the correct login button' , ( ) => {
@@ -110,31 +110,64 @@ describe('ProviderCard', () => {
110
110
} )
111
111
112
112
describe ( 'when to param is provided' , ( ) => {
113
- it ( 'appends redirect param to the login url' , ( ) => {
114
- const queryString = qs . stringify (
115
- { to : '/gh/codecov/gazebo' } ,
116
- { addQueryPrefix : true }
117
- )
118
- render (
119
- < ProviderCard
120
- provider = { LoginProvidersEnum . BITBUCKET }
121
- providers = { [ 'BITBUCKET' ] }
122
- /> ,
123
- { wrapper : wrapper ( `/login/bb${ queryString } ` ) }
124
- )
125
-
126
- const redirectURL = qs . stringify (
127
- { to : `http://secret-api-url/bb${ queryString } ` } ,
128
- { addQueryPrefix : true }
129
- )
130
- const element = screen . getByRole ( 'link' , {
131
- name : `Login via Bitbucket` ,
132
- } )
133
- expect ( element ) . toBeInTheDocument ( )
134
- expect ( element ) . toHaveAttribute (
135
- 'href' ,
136
- `secret-api-url/login/bb${ redirectURL } `
137
- )
138
- } )
113
+ interface Case {
114
+ provider : typeof LoginProvidersEnum . GITHUB
115
+ isSelfHosted : boolean
116
+ name : string
117
+ providers : Array < EnterpriseLoginProviders >
118
+ to : string
119
+ }
120
+
121
+ const cases : Case [ ] = [
122
+ {
123
+ provider : LoginProvidersEnum . GITHUB ,
124
+ isSelfHosted : false ,
125
+ name : LoginProvidersEnum . GITHUB . name ,
126
+ providers : [ 'GITHUB' ] ,
127
+ to : '/login/gh' ,
128
+ } ,
129
+ {
130
+ provider : LoginProvidersEnum . GITHUB ,
131
+ isSelfHosted : true ,
132
+ name : LoginProvidersEnum . GITHUB . selfHostedName ,
133
+ providers : [ 'GITHUB_ENTERPRISE' ] ,
134
+ to : '/login/ghe' ,
135
+ } ,
136
+ ]
137
+
138
+ describe . each ( cases ) (
139
+ '$name' ,
140
+ ( { provider, providers, name, isSelfHosted } ) => {
141
+ describe ( `is ${ isSelfHosted ? 'self hosted' : 'external' } provider` , ( ) => {
142
+ it ( 'appends redirect param to the login url' , ( ) => {
143
+ const key = isSelfHosted
144
+ ? provider . selfHostedKey
145
+ : provider . externalKey
146
+ const queryString = qs . stringify (
147
+ { to : `/${ key } /codecov/gazebo` } ,
148
+ { addQueryPrefix : true }
149
+ )
150
+
151
+ render ( < ProviderCard provider = { provider } providers = { providers } /> , {
152
+ wrapper : wrapper ( `/login/${ key } ${ queryString } ` ) ,
153
+ } )
154
+
155
+ const redirectURL = qs . stringify (
156
+ { to : `http://secret-api-url/${ key } ${ queryString } ` } ,
157
+ { addQueryPrefix : true }
158
+ )
159
+
160
+ const element = screen . getByRole ( 'link' , {
161
+ name : `Login via ${ name } ` ,
162
+ } )
163
+ expect ( element ) . toBeInTheDocument ( )
164
+ expect ( element ) . toHaveAttribute (
165
+ 'href' ,
166
+ `secret-api-url/login/${ key } ${ redirectURL } `
167
+ )
168
+ } )
169
+ } )
170
+ }
171
+ )
139
172
} )
140
173
} )
0 commit comments