| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/ui/authentication/authentication_ui_util.h" |
| |
| #include "testing/platform_test.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| namespace { |
| void ExpectErrorInMessage(NSError* error, |
| NSString* message, |
| BOOL hasDescription) { |
| if (hasDescription) { |
| EXPECT_TRUE([message containsString:error.localizedDescription]); |
| } else if (error.userInfo[NSLocalizedDescriptionKey]) { |
| EXPECT_FALSE([message containsString:error.localizedDescription]); |
| } |
| EXPECT_TRUE([message containsString:error.domain]); |
| EXPECT_TRUE([message containsString:[@(error.code) description]]); |
| } |
| } |
| |
| using AuthenticationUIUtil = PlatformTest; |
| |
| // Tests the error message with one error with a localized description. |
| TEST_F(AuthenticationUIUtil, DialogMessageFromErrorWithLocalizedDescription) { |
| NSDictionary* userInfo = |
| @{NSLocalizedDescriptionKey : @"MyLocalizedDescription"}; |
| NSError* error = |
| [NSError errorWithDomain:@"MyErrorDomain" code:-1234 userInfo:userInfo]; |
| NSString* message = DialogMessageFromError(error); |
| ExpectErrorInMessage(error, message, YES); |
| } |
| |
| // Tests the error message with one error without a localized description. |
| TEST_F(AuthenticationUIUtil, |
| DialogMessageFromErrorWithoutLocalizedDescription) { |
| NSError* error = |
| [NSError errorWithDomain:@"MyErrorDomain" code:-1234 userInfo:nil]; |
| NSString* message = DialogMessageFromError(error); |
| ExpectErrorInMessage(error, message, NO); |
| } |
| |
| // Tests the error message with an error with 2 underlying errors. |
| TEST_F(AuthenticationUIUtil, DialogMessageFromErrorWithUnderlyingErrors) { |
| // Error 1 |
| NSDictionary* userInfo1 = |
| @{NSLocalizedDescriptionKey : @"MyLocalizedDescription1"}; |
| NSError* error1 = |
| [NSError errorWithDomain:@"MyErrorDomain1" code:-1234 userInfo:userInfo1]; |
| |
| // Error 2 |
| NSDictionary* userInfo2 = @{ |
| NSLocalizedDescriptionKey : @"MyLocalizedDescription2", |
| NSUnderlyingErrorKey : error1 |
| }; |
| NSError* error2 = |
| [NSError errorWithDomain:@"MyErrorDomain2" code:-567 userInfo:userInfo2]; |
| |
| // Error 3 |
| NSDictionary* userInfo3 = @{ |
| NSLocalizedDescriptionKey : @"MyLocalizedDescription3", |
| NSUnderlyingErrorKey : error2 |
| }; |
| NSError* error3 = |
| [NSError errorWithDomain:@"MyErrorDomain3" code:-890 userInfo:userInfo3]; |
| |
| NSString* message = DialogMessageFromError(error3); |
| ExpectErrorInMessage(error3, message, YES); |
| ExpectErrorInMessage(error2, message, NO); |
| ExpectErrorInMessage(error1, message, NO); |
| } |