Skip to content

Commit

Permalink
[POOL-589] Allow user creation with blank middle name.
Browse files Browse the repository at this point in the history
Signed-off-by: Pete Higgins <[email protected]>
  • Loading branch information
phiggins committed Jun 13, 2017
1 parent 583c53f commit f4c1b84
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/oc_erchef/apps/chef_objects/src/chef_regex.erl
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@
%% Validation regex for various names
-define(HUMAN_NAME_REGEX, "[[:word:][:digit:]!'. -]+").

%% Validation regex for various names that can be empty.
-define(OPTIONAL_NAME_REGEX, "[[:word:][:digit:]!'. -]*").

%% Non-blank string regex
-define(NON_BLANK_REGEX, ".+").

Expand Down Expand Up @@ -174,7 +177,7 @@ regex_for(first_name) ->
generate_regex_msg_tuple(?ANCHOR_REGEX(?HUMAN_NAME_REGEX),
<<"Denied first_name. Must only contain word characters, digits, ', or .">>, [unicode, ucp]);
regex_for(middle_name) ->
generate_regex_msg_tuple(?ANCHOR_REGEX(?HUMAN_NAME_REGEX),
generate_regex_msg_tuple(?ANCHOR_REGEX(?OPTIONAL_NAME_REGEX),
<<"Denied middle_name. Must only contain word characters, digits, ', or .">>, [unicode, ucp]);
regex_for(last_name) ->
generate_regex_msg_tuple(?ANCHOR_REGEX(?HUMAN_NAME_REGEX),
Expand Down
20 changes: 20 additions & 0 deletions src/oc_erchef/apps/chef_objects/test/chef_user_tests.erl
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,26 @@ parse_binary_json_tests(Version) ->
?assertEqual(lists:sort(MinValid), lists:sort(GotData))
end
},
{?VD("Can create user with empty middle name"),
fun() ->
UserEJson = make_min_valid_create_user_ejson() ++ [{<<"first_name">>, <<"Alice">>},
{<<"last_name">>, <<"Bobson">>},
{<<"middle_name">>, <<>>}],
UserJson = chef_json:encode({UserEJson}),
{ok, {GotData}} = chef_user:parse_binary_json(Version, UserJson, create, undefined),
?assertEqual(lists:sort(UserEJson), lists:sort(GotData))
end
},
{?VD("Can create user with all required fields and first, middle, and last names"),
fun() ->
UserEJson = make_min_valid_create_user_ejson() ++ [{<<"first_name">>, <<"Alice">>},
{<<"last_name">>, <<"Bobson">>},
{<<"middle_name">>, <<"Joe">>}],
UserJson = chef_json:encode({UserEJson}),
{ok, {GotData}} = chef_user:parse_binary_json(Version, UserJson, create, undefined),
?assertEqual(lists:sort(UserEJson), lists:sort(GotData))
end
},
{?VD("Can create user when external auth uid is present"),
fun() ->
MinValid = make_external_auth_create_user_ejson(),
Expand Down

0 comments on commit f4c1b84

Please sign in to comment.