Add more auth/oauth/multi-acc related test cases

This commit is contained in:
SleepWalker
2019-12-28 11:28:25 +02:00
parent 0325f0aac4
commit 951f538ee5
8 changed files with 267 additions and 18 deletions

View File

@ -66,9 +66,10 @@ export class AccountSwitcher extends React.Component<Props> {
styles.accountSwitcher,
styles[`${skin}AccountSwitcher`],
)}
data-testid="account-switcher"
>
{highlightActiveAccount ? (
<div className={styles.item}>
{highlightActiveAccount && (
<div className={styles.item} data-testid="active-account">
<div
className={clsx(
styles.accountIcon,
@ -97,6 +98,7 @@ export class AccountSwitcher extends React.Component<Props> {
<div className={styles.link}>
<a
className={styles.link}
data-testid="logout-account"
onClick={this.onRemove(activeAccount)}
href="#"
>
@ -106,11 +108,13 @@ export class AccountSwitcher extends React.Component<Props> {
</div>
</div>
</div>
) : null}
)}
{available.map((account, index) => (
<div
className={clsx(styles.item, styles.accountSwitchItem)}
key={account.id}
data-e2e-account-id={account.id}
onClick={this.onSwitch(account)}
>
<div
@ -125,6 +129,7 @@ export class AccountSwitcher extends React.Component<Props> {
{allowLogout ? (
<div
className={styles.logoutIcon}
data-testid="logout-account"
onClick={this.onRemove(account)}
/>
) : (
@ -141,6 +146,7 @@ export class AccountSwitcher extends React.Component<Props> {
<Link to="/login" onClick={this.props.onAfterAction}>
<Button
color={COLOR_WHITE}
data-testid="add-account"
block
small
className={styles.addAccount}

View File

@ -89,10 +89,12 @@ class RootPage extends React.PureComponent<{
<Route path="/rules" component={RulesPage} />
<Route path="/dev" component={DevPage} />
{!user.isGuest && (
<PrivateRoute exact path="/" component={ProfilePage} />
)}
<AuthFlowRoute
exact
path="/"
key="indexPage"
component={user.isGuest ? AuthPage : ProfilePage}
/>
<AuthFlowRoute path="/" component={AuthPage} />
<Route component={PageNotFound} />

View File

@ -77,6 +77,7 @@ export default class AuthFlow implements AuthContext {
onReady: () => void;
navigate: (route: string, options: { replace?: boolean }) => void;
currentRequest: Request;
oAuthStateRestored = false;
dispatch: (action: { [key: string]: any }) => void;
getState: () => RootState;
@ -184,9 +185,6 @@ export default class AuthFlow implements AuthContext {
}
}
/**
* @returns {object} - current request object
*/
getRequest() {
return {
path: '',
@ -296,6 +294,12 @@ export default class AuthFlow implements AuthContext {
return;
}
if (this.oAuthStateRestored) {
return;
}
this.oAuthStateRestored = true;
try {
const data = JSON.parse(localStorage.getItem('oauthData'));
const expirationTime = 2 * 60 * 60 * 1000; // 2h