diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-09-03 16:59:11 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-09-17 10:44:20 -0300 |
| commit | 0772073fe5bfb0f17a50899686eaab30d3d6459e (patch) | |
| tree | 12aaf848f1cba437d411189d887b88c291a76062 /gui | |
| parent | 25afa242b0a3016a0458ab64f0b5260044743cb8 (diff) | |
| download | mullvadvpn-0772073fe5bfb0f17a50899686eaab30d3d6459e.tar.xz mullvadvpn-0772073fe5bfb0f17a50899686eaab30d3d6459e.zip | |
Add authentication failure reason
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/packages/desktop/src/renderer/components/Connect.js | 12 | ||||
| -rw-r--r-- | gui/packages/desktop/src/renderer/lib/daemon-rpc.js | 32 | ||||
| -rw-r--r-- | gui/packages/desktop/test/components/Connect.spec.js | 4 |
3 files changed, 28 insertions, 20 deletions
diff --git a/gui/packages/desktop/src/renderer/components/Connect.js b/gui/packages/desktop/src/renderer/components/Connect.js index 315c83ffc5..832e805bb8 100644 --- a/gui/packages/desktop/src/renderer/components/Connect.js +++ b/gui/packages/desktop/src/renderer/components/Connect.js @@ -39,10 +39,12 @@ type State = { showCopyIPMessage: boolean, }; -function getBlockReasonMessage(reason: BlockReason): string { - switch (reason) { - case 'auth_failed': - return 'Authentication failed'; +function getBlockReasonMessage(blockReason: BlockReason): string { + switch (blockReason.reason) { + case 'auth_failed': { + const details = blockReason.details ? `: ${blockReason.details}` : ''; + return `Authentication failed${details}`; + } case 'ipv6_unavailable': return 'Could not configure IPv6, please enable it on your system or disable it in the app'; case 'set_security_policy_error': @@ -52,7 +54,7 @@ function getBlockReasonMessage(reason: BlockReason): string { case 'no_matching_relay': return 'No relay server matches the current settings'; default: - return `Unknown error: ${(reason: empty)}`; + return `Unknown error: ${(blockReason.reason: empty)}`; } } diff --git a/gui/packages/desktop/src/renderer/lib/daemon-rpc.js b/gui/packages/desktop/src/renderer/lib/daemon-rpc.js index 630d813490..d984bfbf76 100644 --- a/gui/packages/desktop/src/renderer/lib/daemon-rpc.js +++ b/gui/packages/desktop/src/renderer/lib/daemon-rpc.js @@ -42,11 +42,14 @@ const LocationSchema = object({ }); export type BlockReason = - | 'auth_failed' - | 'ipv6_unavailable' - | 'set_security_policy_error' - | 'start_tunnel_error' - | 'no_matching_relay'; + | { + reason: + | 'ipv6_unavailable' + | 'set_security_policy_error' + | 'start_tunnel_error' + | 'no_matching_relay', + } + | { reason: 'auth_failed', details: ?string }; export type TunnelState = 'connecting' | 'connected' | 'disconnecting' | 'disconnected' | 'blocked'; @@ -230,17 +233,20 @@ const AccountDataSchema = object({ expiry: string, }); -const allBlockReasons: Array<BlockReason> = [ - 'auth_failed', - 'ipv6_unavailable', - 'set_security_policy_error', - 'start_tunnel_error', - 'no_matching_relay', -]; const TunnelStateTransitionSchema = oneOf( object({ state: enumeration('blocked'), - details: enumeration(...allBlockReasons), + details: oneOf( + object({ + reason: enumeration( + 'ipv6_unavailable', + 'set_security_policy_error', + 'start_tunnel_error', + 'no_matching_relay', + ), + }), + object({ reason: enumeration('auth_failed'), details: maybe(string) }), + ), }), object({ state: enumeration('connected', 'connecting', 'disconnected', 'disconnecting'), diff --git a/gui/packages/desktop/test/components/Connect.spec.js b/gui/packages/desktop/test/components/Connect.spec.js index 57fd93229f..567518b0ce 100644 --- a/gui/packages/desktop/test/components/Connect.spec.js +++ b/gui/packages/desktop/test/components/Connect.spec.js @@ -45,7 +45,7 @@ describe('components/Connect', () => { connection: { ...defaultProps.connection, status: 'blocked', - blockReason: 'no_matching_relay', + blockReason: { reason: 'no_matching_relay' }, }, }); @@ -157,7 +157,7 @@ describe('components/Connect', () => { connection: { ...defaultProps.connection, status: 'blocked', - blockReason: 'no_matching_relay', + blockReason: { reason: 'no_matching_relay' }, }, }); const blockingAccordion = getComponent(component, 'blockingAccordion'); |
