diff --git a/Lock/Tests/A0PasswordStrengthErrorHandlerSpec.m b/Lock/Tests/A0PasswordStrengthErrorHandlerSpec.m index cbb4e1ed9..7535a6061 100644 --- a/Lock/Tests/A0PasswordStrengthErrorHandlerSpec.m +++ b/Lock/Tests/A0PasswordStrengthErrorHandlerSpec.m @@ -27,6 +27,7 @@ static NSString *LenghtError = @"At least 10 characters in length."; static NSString *IdenticalCharacterError = @"No more than 2 identical characters in a row (e.g., \"aaa\" not allowed)."; static NSString *CharacterSetError = @"Contain at least 3 of the following 4 types of characters:"; +static NSString *CharacterSetAllError = @"Should contain:"; static NSString *LowerCaseSet = @"lower case letters (a-z)"; static NSString *UpperCaseSet = @"upper case letters (A-Z)"; static NSString *NumberSet = @"numbers (i.e. 0-9)"; @@ -62,7 +63,7 @@ expect([handler localizedMessageFromError:error]).to.contain(IdenticalCharacterError); }); -it(@"should return message for character set error", ^{ +it(@"should return message for contains at least character set error", ^{ NSError *error = createError([builder errorWithFailingRules:@[@"containsAtLeast"]]); NSString *message = [handler localizedMessageFromError:error]; expect(message).to.contain(CharacterSetError); @@ -72,4 +73,14 @@ expect(message).to.contain(SpecialCharacterSet); }); +it(@"should return message for character should contain set error", ^{ + NSError *error = createError([builder errorWithFailingRules:@[@"shouldContain"]]); + NSString *message = [handler localizedMessageFromError:error]; + expect(message).to.contain(CharacterSetAllError); + expect(message).to.contain(LowerCaseSet); + expect(message).to.contain(UpperCaseSet); + expect(message).to.contain(NumberSet); + expect(message).to.contain(SpecialCharacterSet); +}); + SpecEnd \ No newline at end of file diff --git a/Lock/Tests/PasswordStrengthError.json b/Lock/Tests/PasswordStrengthError.json index b87534d3a..9d8732035 100644 --- a/Lock/Tests/PasswordStrengthError.json +++ b/Lock/Tests/PasswordStrengthError.json @@ -42,6 +42,33 @@ "verified": false }, { + "code": "shouldContain", + "items": [ + { + "code": "lowerCase", + "message": "lower case letters (a-z)", + "verified": false + }, + { + "code": "upperCase", + "message": "upper case letters (A-Z)", + "verified": false + }, + { + "code": "numbers", + "message": "numbers (i.e. 0-9)", + "verified": false + }, + { + "code": "specialCharacters", + "message": "special characters (e.g. !@#$%^&*)", + "verified": false + } + ], + "message": "Should contain:", + "verified": false + }, + { "code": "identicalChars", "format": [ 2, diff --git a/Pod/Classes/Core/A0PasswordStrengthErrorHandler.m b/Pod/Classes/Core/A0PasswordStrengthErrorHandler.m index e73659218..72d2dd533 100644 --- a/Pod/Classes/Core/A0PasswordStrengthErrorHandler.m +++ b/Pod/Classes/Core/A0PasswordStrengthErrorHandler.m @@ -47,7 +47,7 @@ - (NSString *)localizedMessageFromError:(NSError *)error { if (![rule[@"verified"] boolValue]) { if ([ruleCode isEqualToString:@"lengthAtLeast"]) { [errors addObject:[self lengthMessageFromRule:rule]]; - } else if ([ruleCode isEqualToString:@"containsAtLeast"]) { + } else if ([ruleCode isEqualToString:@"containsAtLeast"] || [ruleCode isEqualToString:@"shouldContain"]) { [errors addObject:[self characterSetMessageFromRule:rule]]; } else if ([ruleCode isEqualToString:@"identicalChars"]) { [errors addObject:[self identicalCharacterMessageFromRule:rule]];