public void ParseJwtWithInternationalCharacters(string email, string firstName, string lastName)
{
var jwt = GetJwtString(email, firstName, lastName);
var context = Substitute.For<HttpContextBase>();
var request = Substitute.For<HttpRequestBase>();
var headers = new NameValueCollection();
headers.Add(Constants.FrontEndDisplayNameHeader, string.Empty);
headers.Add(Constants.FrontEndPrincipalNameHeader, Constants.AnonymousUserName);
headers.Add(Constants.PortalTokenHeader, jwt);
request.Headers.Returns(headers);
request.UrlReferrer.Returns(new Uri("http://example.com"));
context.Request.Returns(request);
var frontEndAuth = new FrontEndAuthProvider();
Assert.True(frontEndAuth.TryAuthenticateRequest(context), $"Assert TryAuthenticate is successful. {email}, {firstName}, {lastName}");
Assert.NotNull(context.User);
Assert.True(context.User is AzureFunctionsPrincipal);
var user = context.User as AzureFunctionsPrincipal;
Assert.True(user.Identity is AzureFunctionsIdentity);
var identity = user.Identity as AzureFunctionsIdentity;
Assert.Equal(email, identity.Name);
}