public void EmptyIsInvalid() { string input = "", output = null; CultureInfo culture = CultureInfo.InvariantCulture; Assert.IsFalse(PhoneNumberAttribute.ConvertNationalToInternational(input, culture, out output)); Assert.IsNull(output); }
public void InternationalBasicWorks() { string input = "+33123456789", output = null; CultureInfo culture = CultureInfo.InvariantCulture; Assert.IsTrue(PhoneNumberAttribute.ConvertNationalToInternational(input, culture, out output)); Assert.AreEqual(input, output); }
public void NationalInvariantFails() { string input = "123.456.789", output = null; CultureInfo culture = CultureInfo.InvariantCulture; Assert.IsFalse(PhoneNumberAttribute.ConvertNationalToInternational(input, culture, out output)); Assert.IsNull(output); }
public void ReturnsTrueWithValidValue() { var attr = new PhoneNumberAttribute(); string value = "+33123456798"; bool expected = true; bool result = attr.IsValid(value); Assert.AreEqual(expected, result); }
public void ReturnsTrueWithEmptyValue() { var attr = new PhoneNumberAttribute(); string value = string.Empty; bool expected = true; bool result = attr.IsValid(value); Assert.AreEqual(expected, result); }
public async Task <string> RenderAsync(string model) { string display = PhoneNumberAttribute.GetDisplay(model); if (!string.IsNullOrWhiteSpace(display)) { model = display; } return(await TextEditComponentBase.RenderTextAsync(this, model, "yt_softelvdm_twilioprocessor_phonenumber")); }
public void ReturnsFalseWithObviousInvalid() { var attr = new PhoneNumberAttribute(); string value = "foobar", name = "PhoneNumber"; var context = new ValidationContext(new object(), null, null); context.MemberName = name; var result = attr.GetValidationResult(value, context); Assert.IsNotNull(result); Assert.AreEqual("Use the international phone number format (+xxyyyyyyyyyy).", result.ErrorMessage); Assert.AreEqual(1, result.MemberNames.Count()); Assert.AreEqual(name, result.MemberNames.Single()); }
public void PhoneNumbersCountry() { var sut = new PhoneNumberAttribute("NZ"); Assert.IsTrue(sut.IsValid("")); //empty Assert.IsTrue(sut.IsValid((string)null)); //null Assert.IsTrue(sut.IsValid(1)); //not string Assert.IsTrue(sut.IsValid("+64 21 000 0000")); //valid international number Assert.IsTrue(sut.IsValid("+64210000000")); //valid number no spaces Assert.IsTrue(sut.IsValid("021 000 0000")); //valid number as country code specified Assert.IsTrue(sut.IsValid("021-00 000 00")); //valid number weird spaces and dashes Assert.IsFalse(sut.IsValid("021 000 00")); //invalid number as too short Assert.IsFalse(sut.IsValid("021 000 000000")); //invalid number as too long }
/// <summary> /// Called before action runs. /// </summary> /// <remarks>Used to normalize all phone numbers to E164 format.</remarks> public static Task <string> ControllerPreprocessActionAsync(string propName, string model, ModelStateDictionary modelState) { if (!string.IsNullOrWhiteSpace(model)) { string number = PhoneNumberAttribute.GetE164(model); if (!string.IsNullOrWhiteSpace(number)) { model = number; } else { modelState.AddModelError(propName, __ResStr("invPhone", "{0} is an invalid phone number", model)); } } return(Task.FromResult(model)); }
public async Task <bool> AddItemAsync(BlockedNumberEntry data) { data.Created = DateTime.UtcNow; data.Number = PhoneNumberAttribute.GetE164(data.Number); if (!await DataProvider.AddAsync(data)) { return(false); } await Auditing.AddAuditAsync($"{nameof(BlockedNumberDataProvider)}.{nameof(AddItemAsync)}", Dataset, Guid.Empty, $"Add Blocked Number {data.Id}", DataBefore : null, DataAfter : data ); return(true); }
public async Task <UpdateStatusEnum> UpdateItemAsync(BlockedNumberEntry data) { BlockedNumberEntry origData = Auditing.Active ? await GetItemByIdentityAsync(data.Id) : null; data.Updated = DateTime.UtcNow; data.Number = PhoneNumberAttribute.GetE164(data.Number); UpdateStatusEnum status = await DataProvider.UpdateByIdentityAsync(data.Id, data); if (status != UpdateStatusEnum.OK) { return(status); } await Auditing.AddAuditAsync($"{nameof(BlockedNumberDataProvider)}.{nameof(UpdateItemAsync)}", Dataset, Guid.Empty, $"Update Blocked Number {data.Id}", DataBefore : origData, DataAfter : data ); return(UpdateStatusEnum.OK); }
// LOAD/SAVE // LOAD/SAVE // LOAD/SAVE public Task <BlockedNumberEntry> GetItemAsync(string number) { number = PhoneNumberAttribute.GetE164(number); return(DataProvider.GetAsync(number, null)); }
public static string FormatPhoneNumber(string phoneNumber) { return(PhoneNumberAttribute.GetDisplay(phoneNumber)); }