Skip to content

Commit

Permalink
fix: controllo validità campi Email e PECDestintario. Closes #405.
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaiarocci committed Dec 5, 2023
1 parent 03c5f25 commit 562b176
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 9 deletions.
2 changes: 2 additions & 0 deletions CHANGES.md
Expand Up @@ -2,8 +2,10 @@

## In Development

- Fix: Controllo validità campi Email e PEC ([#405][405])
- Fix: CI workflow file rilasciato col package nuget ([#404][404])

[405]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/405
[404]: https://github.com/FatturaElettronica/FatturaElettronica.NET/issues/404

## Stable
Expand Down
17 changes: 14 additions & 3 deletions Test/Ordinaria/DatiTrasmissioneValidator.cs
Expand Up @@ -97,10 +97,21 @@ public void CodiceDestinatarioWhenFormatoTrasmissioneHasValueFPR12()
}

[TestMethod]
public void PECDestinatarioMinMaxLength()
public void PECDestinatarioIsOptional()
{
Challenge.CodiceDestinatario = new('0', 7);
AssertMinMaxLength(x => x.PECDestinatario, 7, 256);
AssertOptional(x => x.PECDestinatario);
}

[TestMethod]
public void PECDestinatarioMustBeValid()
{
Challenge.PECDestinatario = "not really";
var result = Validator.TestValidate(Challenge);
result.ShouldHaveValidationErrorFor(x => x.PECDestinatario);

Challenge.PECDestinatario = "maybe@we.can";
result = Validator.TestValidate(Challenge);
result.ShouldNotHaveValidationErrorFor(x => x.PECDestinatario);
}
}
}
17 changes: 14 additions & 3 deletions Test/Semplificata/DatiTrasmissioneValidator.cs
Expand Up @@ -81,10 +81,21 @@ public void CodiceDestinatarioWhenFormatoTrasmissioneHasValueFSM10()
}

[TestMethod]
public void PECDestinatarioMinMaxLength()
public void PECDestinatarioIsOptional()
{
Challenge.CodiceDestinatario = new('0', 7);
AssertMinMaxLength(x => x.PECDestinatario, 7, 256);
AssertOptional(x => x.PECDestinatario);
}

[TestMethod]
public void PECDestinatarioMustBeValid()
{
Challenge.PECDestinatario = "not really";
var result = Validator.TestValidate(Challenge);
result.ShouldHaveValidationErrorFor(x => x.PECDestinatario);

Challenge.PECDestinatario = "maybe@we.can";
result = Validator.TestValidate(Challenge);
result.ShouldNotHaveValidationErrorFor(x => x.PECDestinatario);
}
}
}
8 changes: 8 additions & 0 deletions Validators/Constants.cs
@@ -0,0 +1,8 @@
namespace FatturaElettronica.Validators;

public class Constants
{
// Vedi 'EmailType' in https://www.agenziaentrate.gov.it/portale/documents/20143/4631413/Schema_VFPR12.xsd
public static string EmailRegex = "([!#-'*+/-9=?A-Z^-~-]+(\\.[!#-'*+/-9=?A-Z^-~-]+)*|"(\\[\\]!#-[^-~ \t]|(\\[\t -~]))+")@([!#-'*+/-9=?A-Z^-~-]+(\\.[!#-'*+/-9=?A-Z^-~-]+)*|\\[[\t -Z^-~]*\\])";

}
3 changes: 2 additions & 1 deletion Validators/ContattiTrasmittenteValidator.cs
Expand Up @@ -11,7 +11,8 @@ public ContattiTrasmittenteValidator()
.Length(5, 12)
.When(x => !string.IsNullOrEmpty(x.Telefono));
RuleFor(dt => dt.Email)
.EmailAddress()
.Length(7, 256)
.Matches(Constants.EmailRegex)
.When(x => !string.IsNullOrEmpty(x.Email));
}
}
Expand Down
3 changes: 2 additions & 1 deletion Validators/ContattiValidator.cs
Expand Up @@ -14,7 +14,8 @@ public ContattiValidator()
.Length(5, 12)
.When(x => !string.IsNullOrEmpty(x.Fax));
RuleFor(x => x.Email)
.EmailAddress()
.Length(7, 256)
.Matches(Constants.EmailRegex)
.When(x => !string.IsNullOrEmpty(x.Email));
}
}
Expand Down
1 change: 1 addition & 0 deletions Validators/DatiTrasmissioneValidator.cs
Expand Up @@ -36,6 +36,7 @@ public DatiTrasmissioneValidator()
.When(x => x.ContattiTrasmittente != null && !x.ContattiTrasmittente.IsEmpty());
RuleFor(dt => dt.PECDestinatario)
.Length(7, 256)
.Matches(Constants.EmailRegex)
.When(x => !string.IsNullOrEmpty(x.PECDestinatario));
}
}
Expand Down
2 changes: 1 addition & 1 deletion Validators/Semplificata/DatiTrasmissioneValidator.cs
Expand Up @@ -28,7 +28,7 @@ public DatiTrasmissioneValidator()
.When(dt => dt.FormatoTrasmissione == Defaults.FormatoTrasmissione.Semplificata)
.WithErrorCode("00311");
RuleFor(dt => dt.PECDestinatario)
.Length(7, 256)
.Matches(Constants.EmailRegex)
.When(x => !string.IsNullOrEmpty(x.PECDestinatario));
}
}
Expand Down

0 comments on commit 562b176

Please sign in to comment.