// // YavscWorkInProgress.cs // /* // paul 21/06/2018 10:11 20182018 6 21 // */ using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using Xunit; using Xunit.Abstractions; using Yavsc.Authentication; using static OAuth.AspNet.AuthServer.Constants; namespace test { [Collection("Yavsc Work In Progress")] [Trait("regres", "yes")] public class YavscWorkInProgress : BaseTestContext, IClassFixture { public YavscWorkInProgress(ServerSideFixture serverFixture, ITestOutputHelper output) : base(output, serverFixture) { } [Theory] [MemberData(nameof(GetLoginIntentData), parameters: 1)] public async Task TestUserMayLogin ( string clientId, string clientSecret, string scope, string authorizeUrl, string redirectUrl, string accessTokenUrl, string login, string pass ) { try { var oauthor = new OAuthenticator(clientId, clientSecret, scope, new Uri(authorizeUrl), new Uri(redirectUrl), new Uri(accessTokenUrl)); var query = new Dictionary(); query[Parameters.Username] = login; query[Parameters.Password] = pass; query[Parameters.GrantType] = GrantTypes.Password; var result = await oauthor.RequestAccessTokenAsync(query); Console.WriteLine(">> Got an output"); Console.WriteLine(Parameters.AccessToken + ": " + result[Parameters.AccessToken]); Console.WriteLine(Parameters.TokenType + ": " + result[Parameters.TokenType]); Console.WriteLine(Parameters.ExpiresIn + ": " + result[Parameters.ExpiresIn]); Console.WriteLine(Parameters.RefreshToken + ": " + result[Parameters.RefreshToken]); } catch (Exception ex) { var webex = ex as WebException; if (webex != null && webex.Status == (WebExceptionStatus)400) { if (login == "joe") { Console.WriteLine("Bad pass joe!"); return; } } throw; } } public static string GetPassword() { var pwd = new StringBuilder(); while (true) { var len = pwd.ToString().Length; ConsoleKeyInfo i = Console.ReadKey(true); if (i.Key == ConsoleKey.Enter) { break; } else if (i.Key == ConsoleKey.Backspace) { if (pwd.Length > 0) { pwd.Remove(len - 1, 1); Console.Write("\b \b"); } } else { pwd.Append(i.KeyChar); Console.Write("*"); } } return pwd.ToString(); } public static IEnumerable GetLoginIntentData(int numTests) { var allData = new List(); Console.WriteLine($"Please, enter {numTests}:"); for (int iTest=0; iTest