using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using TorControlLibrary; using TorControlLibrary.Responses; using System.Threading; using Hermes.Objects; namespace TorLibraryTest { [TestClass] public class ControlConnectionUnitTests { [TestMethod] public void Connect() { ControlConnection connection = new ControlConnection(); connection.Connect(); connection.Close(); } [TestMethod] public void GetCircuitStatuses() { ControlConnection connection = new ControlConnection(); connection.Connect(); List circuits = connection.GetCircuitStatuses(); connection.Close(); } [TestMethod] public void GetStreamStatuses() { ControlConnection connection = new ControlConnection(); connection.Connect(); List circuits = connection.GetStreamStatuses(); connection.Close(); } [TestMethod] public void GetRouterStatuses() { ControlConnection connection = new ControlConnection(); connection.Connect(); List routerInfo = connection.GetAllRouterStatusInfo(); connection.Close(); } [TestMethod] public void GetRouterStatusByName() { ControlConnection connection = new ControlConnection(); connection.Connect(); RouterStatusResponse routerInfo = connection.GetRouterStatusInfoByNickname("moria1"); connection.Close(); Assert.AreEqual("moria1", routerInfo.NickName); } [TestMethod] public void GetRouterDescriptionByName() { ControlConnection connection = new ControlConnection(); connection.Connect(); RouterDescription routerInfo = connection.GetRouterDescriptionByNickname("desync"); connection.Close(); Assert.AreEqual("desync", routerInfo.NickName); } [TestMethod] public void GetRouterStatusByID() { ControlConnection connection = new ControlConnection(); connection.Connect(); RouterStatusResponse routerInfo = connection.GetRouterStatusInfoByID("03C0FB35B3A0D3D12410475C5FDB8F525B7342CD"); connection.Close(); Assert.AreEqual("zagon", routerInfo.NickName); } [TestMethod] public void SendRawCommand() { ControlConnection connection = new ControlConnection(); connection.Connect(); CommandResponse resp = connection.SendRawCommand("getinfo version"); Assert.AreEqual(250, resp.StatusCode); Assert.IsTrue(resp.Response.Contains("version")); } [TestMethod] public void SimpleEventTest() { ControlConnection connection = new ControlConnection(); connection.Connect(); connection.ServerEvent += new Action(connection_ServerEvent); connection.SendRawCommand("SETEVENTS BW"); Assert.IsTrue(eventTest.WaitOne(60000)); connection.Close(); } [TestMethod] public void SocksTest() { Socks5Stream stream = new Socks5Stream("localhost", 9050, "www.google.com", 80); System.IO.StreamWriter writer = new System.IO.StreamWriter(stream); System.IO.StreamReader reader = new System.IO.StreamReader(stream); writer.Write("GET / HTTP 1.1\r\nHost: www.google.com\r\n\r\n"); writer.Flush(); String results = reader.ReadLine(); } void connection_ServerEvent(EventResponse obj) { if (obj.EventType.Equals("BW")) eventTest.Set(); } private AutoResetEvent eventTest = new AutoResetEvent(false); } }