Skip to content

Commit 6dd623c

Browse files
add in test for missing line in internal provider card
1 parent 640fce0 commit 6dd623c

File tree

1 file changed

+111
-78
lines changed

1 file changed

+111
-78
lines changed

src/pages/EnterpriseLandingPage/ProviderCard/ProviderCard.test.tsx

+111-78
Original file line numberDiff line numberDiff line change
@@ -40,59 +40,59 @@ type Provider = {
4040
[K in keyof LoginProviders]: LoginProviders[K]
4141
}[keyof LoginProviders]
4242

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-
9543
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+
9696
describe.each(cases)('$name', ({ provider, providers, to, name }) => {
9797
describe('when system is configured with $providers.[0]', () => {
9898
it('renders the correct login button', () => {
@@ -110,31 +110,64 @@ describe('ProviderCard', () => {
110110
})
111111

112112
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+
)
139172
})
140173
})

0 commit comments

Comments
 (0)