public async Task TestUpdateAuthAsync() { string token = await Utils.GetTestToken(); string authResponsePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ApiResults", "ValidAuthResponse.json"); string authResponse = File.ReadAllText(authResponsePath); string testResultPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ApiResults", "GetTokenSuccessResult.json"); string json = File.ReadAllText(testResultPath); JObject jObject = JObject.Parse(json); jObject["access_token"] = token; json = JsonConvert.SerializeObject(jObject); Guid clientId = Guid.NewGuid(); var mocks = Utils.CreateDefaultGraphApiMock(json); await Utils.SetOneValueDbContextAsync(clientId); BotDbContext db = Utils.CreateMemoryDbContext(); DefaultGraphApi defaultGraphApi = new DefaultGraphApi(db, mocks.Item1, mocks.Item2); Guid authId = (await db.AppAuths.AsQueryable().FirstAsync(item => item.AzureAppId == clientId)).Id; BindHandler bindHandler = new BindHandler(db, defaultGraphApi); await bindHandler.UpdateAuthAsync(authId.ToString(), authResponse); await db.DisposeAsync(); db = Utils.CreateMemoryDbContext(); Assert.AreEqual(1, await db.AppAuths.AsQueryable().CountAsync()); Assert.IsTrue(await db.AppAuths.AsQueryable().AnyAsync(appAuth => appAuth.Id == authId && appAuth.RefreshToken == jObject["refresh_token"].ToString())); }
public async Task TestRegAppAsync() { string testResultPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ApiResults", "ValidApplicationResult.json"); string json = File.ReadAllText(testResultPath); var mocks = Utils.CreateDefaultGraphApiMock(json); BotDbContext db = Utils.CreateMemoryDbContext(); DefaultGraphApi defaultGraphApi = new DefaultGraphApi(db, mocks.Item1, mocks.Item2); BindHandler bindHandler = new BindHandler(db, defaultGraphApi); long userId = 123456; string userName = "******"; string email = "*****@*****.**"; Guid clientId = Guid.NewGuid(); string clientSecret = "741852963"; string appName = "app1"; await bindHandler.RegAppAsync(userId, userName, email, clientId.ToString(), clientSecret, appName); await db.DisposeAsync(); db = Utils.CreateMemoryDbContext(); AzureApp azureApp = await db.AzureApps.Include(azureApp => azureApp.TelegramUser).FirstAsync(); Assert.AreEqual(userId, azureApp.TelegramUserId); Assert.AreEqual(userName, azureApp.TelegramUser.UserName); Assert.AreEqual(email, azureApp.Email); Assert.AreEqual(clientId, azureApp.Id); Assert.AreEqual(clientSecret, azureApp.Secrets); Assert.AreEqual(appName, azureApp.Name); }
public override Task <IProxyServerBindHandler> GetBindHandlerAsync(AddressFamily family) { IPEndPoint bindEP = GetBindEP(family); IProxyServerBindHandler bindHandler = new BindHandler(bindEP); return(Task.FromResult(bindHandler)); }
//属性绑定,setter是从绑定源复制数据到目标的代码 //例子:BindProperty(() => obj2.a = obj1.a),表示obj2.a永远等于obj1.a //必须保证obj2是一个局部变量而不是属性 public BindHandler BindProperty(Action setter) { BindAction(e => setter()); Instance = this; setter.Invoke(); Instance = null; return(this); }
private T AddExpressionListener <T>(Func <T> expression) { Instance = this; var result = expression.Invoke(); Instance = null; return(result); }
public async Task TestUpdateAuthInvalidAuthAsync() { string authResponsePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ApiResults", "InvalidAuthResponse.json"); string authResponse = File.ReadAllText(authResponsePath); BindHandler bindHandler = new BindHandler(null, null); await bindHandler.UpdateAuthAsync(Guid.Empty.ToString(), authResponse); }
public override Task <IProxyServerBindHandler> GetBindHandlerAsync(AddressFamily family) { if (_bindEP.AddressFamily != family) { throw new SocketException((int)SocketError.NetworkUnreachable); } IProxyServerBindHandler bindHandler = new BindHandler(_bindEP, _bindToInterfaceName); return(Task.FromResult(bindHandler)); }
public async Task TestGetAuthUrlAsyncEmailNotExist() { Guid clientId = Guid.NewGuid(); var mocks = Utils.CreateDefaultGraphApiMock(string.Empty); BotDbContext db = Utils.CreateMemoryDbContext(); DefaultGraphApi defaultGraphApi = new DefaultGraphApi(db, mocks.Item1, mocks.Item2); BindHandler bindHandler = new BindHandler(db, defaultGraphApi); (string, string)_ = await bindHandler.GetAuthUrlAsync(clientId.ToString()); }
public async Task TestDeleteNotExistAppAsync() { await Utils.SetDefaultValueDbContextAsync(); BotDbContext db = Utils.CreateMemoryDbContext(); Guid clientId1 = Guid.NewGuid(); await db.DisposeAsync(); db = Utils.CreateMemoryDbContext(); BindHandler bindHandler = new BindHandler(db, null); string _ = await bindHandler.DeleteAppAsync(clientId1.ToString()); }
public async Task TestUnbindNotExistAuthAsync() { await Utils.SetDefaultValueDbContextAsync(); BotDbContext db = Utils.CreateMemoryDbContext(); Guid authId1 = Guid.NewGuid(); await db.DisposeAsync(); db = Utils.CreateMemoryDbContext(); BindHandler bindHandler = new BindHandler(db, null); await bindHandler.UnbindAuthAsync(authId1.ToString()); }
public async Task TestUnbindAuthAsync() { await Utils.SetDefaultValueDbContextAsync(); BotDbContext db = Utils.CreateMemoryDbContext(); Guid authId1 = await db.AppAuths.AsQueryable().Select(app => app.Id).FirstAsync(); await db.DisposeAsync(); db = Utils.CreateMemoryDbContext(); BindHandler bindHandler = new BindHandler(db, null); await bindHandler.UnbindAuthAsync(authId1.ToString()); Assert.AreEqual(await db.AppAuths.AsQueryable().CountAsync(), 1); }
public async Task TestDeleteAppAsync() { await Utils.SetDefaultValueDbContextAsync(); BotDbContext db = Utils.CreateMemoryDbContext(); Guid clientId1 = await db.AzureApps.AsQueryable().Select(app => app.Id).FirstAsync(); await db.DisposeAsync(); db = Utils.CreateMemoryDbContext(); BindHandler bindHandler = new BindHandler(db, null); string deleteUrl = await bindHandler.DeleteAppAsync(clientId1.ToString()); Assert.AreEqual(deleteUrl, string.Format(BindHandler.DeleteUrl, clientId1.ToString())); Assert.AreEqual(await db.AzureApps.AsQueryable().CountAsync(), 2); Assert.AreEqual(await db.AppAuths.AsQueryable().CountAsync(), 1); }
public async Task TestRegInvalidAppAsync() { string testResultPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ApiResults", "InvalidApplicationResult.json"); string json = File.ReadAllText(testResultPath); var mocks = Utils.CreateDefaultGraphApiMock(json); BotDbContext db = Utils.CreateMemoryDbContext(); DefaultGraphApi defaultGraphApi = new DefaultGraphApi(db, mocks.Item1, mocks.Item2); BindHandler bindHandler = new BindHandler(db, defaultGraphApi); long userId = 123456; string userName = "******"; string email = "*****@*****.**"; Guid clientId = Guid.NewGuid(); string clientSecret = "741852963"; string appName = "app1"; await bindHandler.RegAppAsync(userId, userName, email, clientId.ToString(), clientSecret, appName); }
public async Task TestGetAuthUrlAsync() { Guid clientId = Guid.NewGuid(); var mocks = Utils.CreateDefaultGraphApiMock(string.Empty); await Utils.SetOneValueDbContextAsync(clientId); BotDbContext db = Utils.CreateMemoryDbContext(); DefaultGraphApi defaultGraphApi = new DefaultGraphApi(db, mocks.Item1, mocks.Item2); Guid authId = (await db.AppAuths.AsQueryable().FirstAsync(item => item.AzureAppId == clientId)).Id; BindHandler bindHandler = new BindHandler(db, defaultGraphApi); (string, string)results = await bindHandler.GetAuthUrlAsync(clientId.ToString()); string email = "*****@*****.**"; string message = $"https://login.microsoftonline.com/{DefaultGraphApi.GetTenant(email)}/oauth2/v2.0/authorize?client_id={clientId}&response_type=code&redirect_uri={HttpUtility.UrlEncode(BindHandler.AppUrl)}&response_mode=query&scope={HttpUtility.UrlEncode(DefaultGraphApi.Scope)}"; Assert.AreEqual(message, results.Item2); results = await bindHandler.GetAuthUrlAsync(authId.ToString(), false); Assert.AreEqual(message, results.Item2); }
public void NetworkThread() { try { while (true) { try { var client = new TcpClient(); client.Connect(ServerAddress, ServerPort); using (var stream = client.GetStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) { Writer = writer; if (BindHandler != null) { var bindPacket = BindHandler.Invoke(this); SendPacket(bindPacket); } else { Console.WriteLine("Skipped binding packet."); } PostBindHandler.Invoke(this); while (!reader.EndOfStream) { var packetName = reader.ReadLine(); if (!KnownPackets.ContainsKey(packetName)) { continue; } var packet = KnownPackets[packetName]; var arguments = new string[packet.PacketLength]; for (var i = 0; i < arguments.Length; i++) { arguments[i] = reader.ReadLine(); } packet.HandlePacket(arguments, this); } Console.WriteLine("Exited logic."); } } catch (ThreadAbortException) { throw; } catch (Exception exception) { Console.WriteLine("Network exception information: {0}", exception); ExceptionHandler.Invoke(exception); } Writer = null; Thread.Sleep(2500); } } catch (ThreadAbortException) { } }
public virtual Task <IProxyServerBindHandler> GetBindHandlerAsync(AddressFamily family) { IProxyServerBindHandler bindHandler = new BindHandler(family); return(Task.FromResult(bindHandler)); }
public async Task TestUpdateAuthInvalidJsonAsync() { string authResponse = @"{ ""Hi"": ""123"" }"; BindHandler bindHandler = new BindHandler(null, null); await bindHandler.UpdateAuthAsync(Guid.Empty.ToString(), authResponse); }
public async Task TestUpdateAuthErrorFormatAsync() { BindHandler bindHandler = new BindHandler(null, null); await bindHandler.UpdateAuthAsync(Guid.Empty.ToString(), string.Empty); }