public void Validation_Email_Format() { var shouldFailValidation = new [] { "aaa", "bbb", "aa.bb", "aa.bb", "a@b","[email protected]", "a;[email protected]","aaa@em;ail.com", "[email protected];om" }; var shouldPassValidation = new [] { "*****@*****.**","*****@*****.**", "*****@*****.**" }; Func<string,bool> validEmail = (email)=>{ var newUser = new NewUser { Email = email }; // create new user return newUser.validate() // validate .indexed_By_MemberName() // get dictionary with results .hasKey("Email") // see if email .isFalse(); // is not there }; foreach(var testEmail in shouldFailValidation ) // these should all fail Assert.IsFalse(validEmail(testEmail), "Should had failed for: {0}".format(testEmail)); foreach(var testEmail in shouldPassValidation ) // these should all work Assert.IsTrue(validEmail(testEmail), "Should had worked for: {0}".format(testEmail)); }
public void Validation_Email_Size() { var newUser = new NewUser(); var loopMax = 1000; var expectedMaxLength = 256; for (int i = 1; i < loopMax; i++) { newUser.Email = (i*256).randomLetters(); //works quite fast even with values as hight as 1000000 newUser.Username = "".add_RandomLetters(10); newUser.Password = "******".add_RandomLetters(20); var dateStart = DateTime.Now; var validEmail = newUser.valid_Email_Address(); Assert.IsFalse(validEmail); var validationResults = newUser.validate(); var resultsMapped = validationResults.indexed_By_MemberName(); var seconds = (DateTime.Now - dateStart).TotalSeconds; Assert.Less(seconds,1, "A email with size {0} took more than 1 sec to calculate".format(i*10)); if (i > expectedMaxLength) { Assert.AreEqual(resultsMapped["Email"].size() , 1); Assert.IsTrue (resultsMapped["Email"].contains("The field Email must be a string with a maximum length of {0}.".format(expectedMaxLength))); } } }
public void Validation_NewUser_LargeDataInFields() { var newUser = new NewUser(); // new empty user object foreach (var property in newUser.type().properties()) // populate all strings newUser.prop(property.Name, 5001.randomLetters()); // ... with a random 5001 char value var validationResults = newUser.validate(); // validate var resultsMapped = validationResults.indexed_By_MemberName(); foreach (var result in resultsMapped) // checks validation errors Assert.IsTrue(result.Value.first() .contains("The field {0} must be a string with a maximum length of".format(result.Key)) || result.Value.second().contains("The field {0} must be a string with a maximum length of".format(result.Key)) , "mappings : {0}".format(result.Value.toString())); }
public void Issue_826__No_lenght_constraint_on_User_Tags_SigupResponse() { var userData = new TM_UserData(); var newUser = new NewUser().with_Random_Data(); newUser.validate().asStringList().assert_Is_Empty(); var userTag_Ok = new UserTag { Key = 254.randomLetters(), Value = 254.randomLetters() }; var userTag_Fail = new UserTag { Key = 256.randomLetters(), Value = 256.randomLetters() }; userTag_Ok.validate().assert_Empty(); userTag_Fail.validate().assert_Not_Empty(); newUser.UserTags.add(userTag_Ok); userData.createTmUserResponse(newUser).UserCreated.assert_Is_Not(0); newUser.UserTags.add(userTag_Fail); userData.createTmUser(newUser).assert_Is(0); }
public void Validation_Email_Size() { var newUser = new NewUser(); var loopMax = 100; var expectedMaxLength = 50; for (int i = 1; i < loopMax; i++) { newUser.Email = (i*10).randomLetters(); //works quite fast even with values as hight as 1000000 var dateStart = DateTime.Now; var validationResults = newUser.validate(); var resultsMapped = validationResults.indexed_By_MemberName(); var seconds = (DateTime.Now - dateStart).TotalSeconds; Assert.Less(seconds,1, "A email with size {0} took more than 1 sec to calculate".format(i)); Assert.IsTrue(resultsMapped["Email"].contains("The field Email must match the regular expression '{0}'.".format(ValidationRegex.Email)), "It was {0}".format(resultsMapped["Email"].toString())); if (i > expectedMaxLength) { Assert.AreEqual(resultsMapped["Email"].size() , 2); Assert.IsTrue (resultsMapped["Email"].contains("The field Email must be a string with a maximum length of {0}.".format(expectedMaxLength))); } } }
public void Validation_NewUser_RequiredFields() { var newUser = new NewUser(); //var requiredValues = "Company,Country,Firstname,Lastname,Note,Password,State,Title,Username,Email".split(","); var requiredValues = "Password,Username,Email".split(","); var validationResults = newUser.validate(); var resultsMapped = validationResults.indexed_By_MemberName(); var validationok = newUser.validation_Ok(); //foreach (var result in validationResults) // "{0} - {1}".info(result.MemberNames.asString(), result.ErrorMessage); Assert.IsNotEmpty(validationResults , "Validation results should not be empty"); Assert.IsFalse (validationok , "Validation Ok should be false"); Assert.IsFalse (resultsMapped.hasKey("UserName__A") , "There should be no mapping here"); Assert.AreEqual (requiredValues.size(), validationResults.size(), "# of validation results"); foreach (var requiredValue in requiredValues) { Assert.IsTrue (resultsMapped.hasKey(requiredValue), "requiredValue not found in mapped data: {0}".format(requiredValue)); Assert.AreEqual(resultsMapped[requiredValue].first(), "The {0} field is required.".format(requiredValue)); } }
[Admin] public string VerifyUserData(string payload) { UserRole.Admin.demand(); var users = payload.split("\n"); var userData = TM_UserData.Current; var errorMessage = string.Empty; var emails = new HashSet <string>(); var usernames = new HashSet <string>(); foreach (var user in users) { var rawData = user.split(","); //Safe check for if (rawData.count() < 13) { errorMessage = string.Format("There is a missing field for user {0}.Please verify.", rawData[0] ?? ""); break; } var userName = rawData[0] ?? ""; var password = rawData[1] ?? ""; var email = rawData[2] ?? ""; var firstName = rawData[3] ?? ""; var lastName = rawData[4] ?? ""; var company = rawData[5] ?? ""; var title = rawData[6] ?? ""; var country = rawData[7] ?? ""; var state = rawData[8] ?? ""; var expiryDate = rawData[9] ?? ""; var role = rawData[10] ?? ""; var passwordExpire = rawData[11] ?? ""; var userEnabled = rawData[12] ?? ""; var tmUser = new NewUser { Username = userName, Password = password, Company = company, Country = country, Email = email, Firstname = firstName, Lastname = lastName, GroupId = int.Parse(role), Note = "CSV user creation", State = state, Title = title }; if (!usernames.Contains(userName)) { usernames.Add(userName); } else { errorMessage = string.Format("Username {0} is already being used in this import.Please verify.", userName); break; } if (!emails.Contains(email.ToString())) { emails.Add(email); } else { errorMessage = string.Format("Email address {0} is already being used for another user in this import.Please verify.", email); break; } //Check wether or not the user does exist. if (userName.tmUser().notNull()) { errorMessage = string.Format("Username {0} already exist.", userName); break; } if (tmUser.valid_Email_Address().isFalse()) { errorMessage = TMConsts.DEFAULT_EMAIL_ADDRESS_IS_INVALID; break; } if (tmUser.validate().Count > 0) { errorMessage = string.Format("Please verify data for user {0} :", userName); errorMessage = tmUser.validate().Aggregate(errorMessage, (current, message) => current + " {0}".format(message.ErrorMessage)); break; } if (userData.TMUsers.Exists(x => x.EMail == email)) { errorMessage = string.Format("Email {0} already exist", email); break; } if (firstName == "") { errorMessage = string.Format("FirstName is a required field for user {0}", userName); break; } if (lastName == "") { errorMessage = string.Format("Last Name is a required field for user {0}", userName); break; } DateTime outputDate; if (String.IsNullOrEmpty(expiryDate) || !DateTime.TryParse(expiryDate, out outputDate)) { errorMessage = string.Format("Please enter a valid Expiration date for user {0}. Format must be {1}.", userName, "yyyy/mm/dd"); break; } if (outputDate <= DateTime.Now) { errorMessage = string.Format("Expiry date cannot be prior or equal than today. User {0}", userName); break; } if (passwordExpire.trim().ToLower() != "y" && passwordExpire.trim().ToLower() != "n") { errorMessage = string.Format("Please verify data for user {0}, Password expire value must be Y (for yes) or N (for No)", userName); break; } if (userEnabled.trim().ToLower() != "y" && userEnabled.trim().ToLower() != "n") { errorMessage = string.Format("Please verify data for user {0}, User Enabled value must be Y (for yes) or N (for No)", userName); break; } if (!Enum.IsDefined(typeof(UserGroup), int.Parse(role))) { errorMessage = string.Format("The group value set for user {0} is invalid. Valid groups are {1} {2} and {3}", userName, UserGroup.Admin, UserGroup.Editor, UserGroup.Reader); break; } } return(String.IsNullOrEmpty(errorMessage) ? "Success" : errorMessage); }
public void createTmUser() { UserGroup.None.assert(); // change current thread privildges to None var newUser = new NewUser() { Company = 10.randomLetters(), Country = 10.randomLetters(), Firstname = 10.randomLetters(), Lastname = 10.randomLetters(), Note = 10.randomLetters(), Password = "******"+10.randomLetters(), State = 10.randomLetters(), Title = 10.randomLetters(), Username = 10.randomLetters(), Email = "{0}@{0}.{0}".format(3.randomLetters()) }; Assert.IsEmpty(newUser.validate()); var user1 = newUser.create(); var user2 = newUser.create(); Assert.AreNotEqual(user1, 0); Assert.AreNotEqual(user1, user2); //try with email in upper case newUser.Username = 10.randomLetters(); newUser.Email = newUser.Email.upper(); //try creating a repeated user Assert.AreEqual(0, newUser.create()); //try creating an admin user (which should fail for anonymous users) newUser.GroupId = (int)UserGroup.Admin; newUser.Username = 10.randomLetters(); newUser.Email = "{0}@{0}.{0}".format(3.randomLetters()); Assert.Throws<SecurityException>(()=> newUser.create()); UserGroup.Admin.setPrivileges(); Assert.AreNotEqual(0, newUser.create()); //try creating a repeated user Assert.AreEqual (0, newUser.create()); newUser.Username = 10.randomLetters(); // just difference username should fail Assert.AreEqual (0, newUser.create()); newUser.Email = "{0}@{0}.{0}".format(3.randomLetters()); // with different username and password should work Assert.AreNotEqual(0, newUser.create()); //test nulls and fail validation Assert.AreEqual (0, userData.createTmUser(null)); newUser.Username = null; Assert.AreEqual (0, newUser.create()); }
public void CreateTmUserSigupResponse_Success() { UserGroup.None.assert(); // change current thread privildges to None var newUser = new NewUser().with_Random_Data(); newUser.validate().empty(); var response = newUser.createSigupResponse(); response.assert_Not_Null(); response.UserCreated.assert_Bigger_Than(0); response.Signup_Status.assert_Is(Signup_Result.SignupStatus.Signup_Ok); response.Validation_Results.count().assert_Is(0); }
public void CreateTmUserSigupResponse_EmailMaxLength_Exceeded() { UserGroup.None.assert(); // change current thread privildges to None var newUser = new NewUser().with_Random_Data(); newUser.Email= newUser.Email +"".add_RandomLetters(260); newUser.Email.Length.assert_Bigger_Than(256); newUser.validate().notEmpty(); newUser.validate().count().assert_Is(1); newUser.validate().first().ErrorMessage.assert_Is("The field Email must be a string with a maximum length of 256."); }
public void CreateTmUserSigupResponse_EmailMaxLength_Allowed() { UserGroup.None.assert(); // change current thread privildges to None var newUser = new NewUser().with_Random_Data(); newUser.Email = newUser.Email + "".add_RandomLetters(232); newUser.Email.Length.assert_Is(256); newUser.validate().assert_Is_Empty(); newUser.createSigupResponse().UserCreated.assert_Bigger_Than(0); }
[WebMethod(EnableSession = true)] public List <String> CreateUser_Validate(NewUser newUser) { return(newUser.validate().asStringList()); }
public List<String> CreateUser_Validate(NewUser newUser) { return newUser.validate().asStringList(); }
public string VerifyUserData(string payload) { UserRole.Admin.demand(); var users = payload.split("\n"); var userData = TM_UserData.Current; var errorMessage = string.Empty; var emails = new HashSet<string>(); var usernames = new HashSet<string>(); foreach (var user in users) { var rawData = user.split(","); //Safe check for if (rawData.count() < 13) { errorMessage = string.Format("There is a missing field for user {0}.Please verify.", rawData[0] ?? ""); break; } var userName = rawData[0] ?? ""; var password = rawData[1] ?? ""; var email = rawData[2] ?? ""; var firstName = rawData[3] ?? ""; var lastName = rawData[4] ?? ""; var company = rawData[5] ?? ""; var title = rawData[6] ?? ""; var country = rawData[7] ?? ""; var state = rawData[8] ?? ""; var expiryDate = rawData[9] ?? ""; var role = rawData[10] ?? ""; var passwordExpire = rawData[11] ?? ""; var userEnabled = rawData[12] ?? ""; var tmUser = new NewUser { Username = userName, Password = password, Company = company, Country = country, Email = email, Firstname = firstName, Lastname = lastName, GroupId = int.Parse(role), Note = "CSV user creation", State = state, Title = title }; if (!usernames.Contains(userName)) usernames.Add(userName); else { errorMessage = string.Format("Username {0} is already being used in this import.Please verify.", userName); break; } if (!emails.Contains(email.ToString())) emails.Add(email); else { errorMessage = string.Format("Email address {0} is already being used for another user in this import.Please verify.", email); break; } //Check wether or not the user does exist. if (userName.tmUser().notNull()) { errorMessage = string.Format("Username {0} already exist.", userName); break; } if (tmUser.valid_Email_Address().isFalse()) { errorMessage = TMConsts.DEFAULT_EMAIL_ADDRESS_IS_INVALID; break; } if (tmUser.validate().Count > 0) { errorMessage = string.Format("Please verify data for user {0} :", userName); errorMessage = tmUser.validate().Aggregate(errorMessage, (current, message) => current + " {0}".format(message.ErrorMessage)); break; } if (userData.TMUsers.Exists(x => x.EMail == email)) { errorMessage = string.Format("Email {0} already exist", email); break; } if (firstName=="") { errorMessage = string.Format("FirstName is a required field for user {0}", userName); break; } if (lastName=="") { errorMessage = string.Format("Last Name is a required field for user {0}", userName); break; } DateTime outputDate; if (String.IsNullOrEmpty(expiryDate)||!DateTime.TryParse(expiryDate, out outputDate)) { errorMessage = string.Format("Please enter a valid Expiration date for user {0}. Format must be {1}.", userName, "yyyy/mm/dd"); break; } if (outputDate <= DateTime.Now) { errorMessage = string.Format("Expiry date cannot be prior or equal than today. User {0}", userName); break; } if (passwordExpire.trim().ToLower() != "y" && passwordExpire.trim().ToLower() != "n") { errorMessage = string.Format("Please verify data for user {0}, Password expire value must be Y (for yes) or N (for No)", userName); break; } if (userEnabled.trim().ToLower() != "y" && userEnabled.trim().ToLower() != "n") { errorMessage = string.Format("Please verify data for user {0}, User Enabled value must be Y (for yes) or N (for No)", userName); break; } if (!Enum.IsDefined(typeof(UserGroup), int.Parse(role))) { errorMessage = string.Format("The group value set for user {0} is invalid. Valid groups are {1} {2} and {3}", userName, UserGroup.Admin, UserGroup.Editor, UserGroup.Reader); break; } } return(String.IsNullOrEmpty(errorMessage) ? "Success" : errorMessage); }
private static Signup_Result ValidationFailed(TMConfig config, NewUser newUser) { var sigupResponse = new Signup_Result(); var validationList = newUser.validate(); sigupResponse.Signup_Status = Signup_Result.SignupStatus.Validation_Failed; sigupResponse.UserCreated = 0; if (config.showDetailedErrorMessages()) { foreach (var validation in validationList) { var field = validation.MemberNames.FirstOrDefault(); sigupResponse.Validation_Results.Add(new Validation_Results { Field = field, Message = validation.ErrorMessage }); } } else sigupResponse.Simple_Error_Message = config.TMErrorMessages.General_SignUp_Error_Message; return sigupResponse; }