Files
sqltoolsservice/test/Microsoft.SqlTools.ServiceLayer.UnitTests/Authentication/AuthenticatorTests.cs
2023-05-30 14:46:18 -07:00

51 lines
2.4 KiB
C#

//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.SqlTools.Authentication;
using NUnit.Framework;
namespace Microsoft.SqlTools.ServiceLayer.UnitTests.Authentication
{
[TestFixture]
public class AuthenticatorTests
{
[Test]
[TestCase("John Doe - johndoe@constoso.com", "johndoe@constoso.com")]
[TestCase("John Doe - john-doe@constoso.com", "john-doe@constoso.com")]
[TestCase("John Doe (Manager - Sales) - johndoe@constoso.com", "johndoe@constoso.com")]
[TestCase("John - Doe (Manager - Sales) - john-doe@constoso.com", "john-doe@constoso.com")]
[TestCase("John Doe - johndoe@constoso-sales.com", "johndoe@constoso-sales.com")]
[TestCase("johndoe@constoso.com", "johndoe@constoso.com")]
[TestCase("johndoe@constoso-sales.com", "johndoe@constoso-sales.com")]
public async Task GetTokenAsyncExtractsEmailSuccessfully(string username, string expectedEmail)
{
Authenticator authenticator = new Authenticator(new SqlTools.Authentication.Utility.AuthenticatorConfiguration(
Guid.NewGuid().ToString(), "AppName", ".", "dummyCacheFile"), () => ("key", "iv"));
try
{
await authenticator.GetTokenAsync(new AuthenticationParams(AuthenticationMethod.ActiveDirectoryInteractive,
"https://login.microsoftonline.com/",
"common",
"https://database.windows.net/",
new string[] {
"https://database.windows.net/.default"
},
username,
Guid.Empty),
CancellationToken.None);
Assert.Fail("Expected exception did not occur.");
}
catch (Exception e)
{
Assert.False(e.Message.StartsWith("Invalid email address format", StringComparison.OrdinalIgnoreCase), $"Email address format should be correct, message received: {e.Message}");
Assert.True(e.Message.Contains($"User account '{expectedEmail}' not found in MSAL cache, please add linked account or refresh account credentials."), $"Expected error did not occur, message received: {e.Message}");
}
}
}
}