From 07b8ea84501181a4da88ba1274e97928c3d95959 Mon Sep 17 00:00:00 2001 From: Brandon Smith Date: Tue, 18 Aug 2015 02:50:16 -0300 Subject: [PATCH] Fixed tests --- .gitignore | 4 +-- src/Discord.Net/Helpers/Http.cs | 23 ++++-------- src/Discord.Net/Membership.cs | 4 +-- .../Discord.Net.Tests.csproj | 11 ++++-- test/Discord.Net.Tests/Settings.cs | 29 +++++++++++++++ test/Discord.Net.Tests/Tests.cs | 36 +++++++++++-------- test/Discord.Net.Tests/config.json.example | 10 ++++++ test/Discord.Net.Tests/packages.config | 4 +++ 8 files changed, 83 insertions(+), 38 deletions(-) create mode 100644 test/Discord.Net.Tests/Settings.cs create mode 100644 test/Discord.Net.Tests/config.json.example create mode 100644 test/Discord.Net.Tests/packages.config diff --git a/.gitignore b/.gitignore index 2fcef09e8..93be3d122 100644 --- a/.gitignore +++ b/.gitignore @@ -196,5 +196,5 @@ FakesAssemblies/ *.opt #Custom -Credentials.cs -project.lock.json \ No newline at end of file +project.lock.json +/test/Discord.Net.Tests/config.json diff --git a/src/Discord.Net/Helpers/Http.cs b/src/Discord.Net/Helpers/Http.cs index a3a040132..f40e38907 100644 --- a/src/Discord.Net/Helpers/Http.cs +++ b/src/Discord.Net/Helpers/Http.cs @@ -22,11 +22,11 @@ namespace Discord.Helpers static Http() { _client = new HttpClient(); - _client.DefaultRequestHeaders.Add("Accept", "*/*"); - _client.DefaultRequestHeaders.Add("Accept-language", "en-US;q=0.8"); + _client.DefaultRequestHeaders.Add("accept", "*/*"); + _client.DefaultRequestHeaders.Add("accept-language", "en-US;q=0.8"); string version = typeof(Http).GetTypeInfo().Assembly.GetName().Version.ToString(2); - _client.DefaultRequestHeaders.Add("User-agent", $"Discord.Net/{version} (https://github.com/RogueException/Discord.Net)"); + _client.DefaultRequestHeaders.Add("user-agent", $"Discord.Net/{version} (https://github.com/RogueException/Discord.Net)"); } private static string _token; @@ -36,7 +36,9 @@ namespace Discord.Helpers set { _token = value; - _client.DefaultRequestHeaders.Add("Authorization", _token); + _client.DefaultRequestHeaders.Remove("authorization"); + if (_token != null) + _client.DefaultRequestHeaders.Add("authorization", _token); } } @@ -132,19 +134,6 @@ namespace Discord.Helpers } } - private static Stream GetDecoder(string contentEncoding, MemoryStream encodedStream) - { - switch (contentEncoding) - { - case "gzip": - return new GZipStream(encodedStream, CompressionMode.Decompress, true); - case "deflate": - return new DeflateStream(encodedStream, CompressionMode.Decompress, true); - default: - throw new ArgumentOutOfRangeException("Unknown encoding: " + contentEncoding); - } - } - #if DEBUG private static void CheckResponse(string json, T obj) { diff --git a/src/Discord.Net/Membership.cs b/src/Discord.Net/Membership.cs index 8e100368e..6aad34c12 100644 --- a/src/Discord.Net/Membership.cs +++ b/src/Discord.Net/Membership.cs @@ -26,8 +26,8 @@ namespace Discord { ServerId = serverId; UserId = userId; - _client = client; JoinedAt = joinedAt; - } + _client = client; + } } } diff --git a/test/Discord.Net.Tests/Discord.Net.Tests.csproj b/test/Discord.Net.Tests/Discord.Net.Tests.csproj index 27d5930b7..82dacfe9c 100644 --- a/test/Discord.Net.Tests/Discord.Net.Tests.csproj +++ b/test/Discord.Net.Tests/Discord.Net.Tests.csproj @@ -8,7 +8,7 @@ Properties Discord.Net.Tests Discord.Net.Tests - v4.6 + v4.5 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 10.0 @@ -36,6 +36,10 @@ 4 + + ..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll + True + @@ -52,7 +56,7 @@ - + @@ -61,6 +65,9 @@ Discord.Net + + + diff --git a/test/Discord.Net.Tests/Settings.cs b/test/Discord.Net.Tests/Settings.cs new file mode 100644 index 000000000..3f26096ee --- /dev/null +++ b/test/Discord.Net.Tests/Settings.cs @@ -0,0 +1,29 @@ +using Newtonsoft.Json; +using System.IO; + +namespace Discord.Net.Tests +{ + internal class Settings + { + private const string path = "../../config.json"; + public static Settings Load() + { + if (!File.Exists(path)) + throw new FileNotFoundException("config.json is missing, rename config.json.example and add data for two separate unused accounts for testing."); + return JsonConvert.DeserializeObject(File.ReadAllText(path)); + } + + public class Account + { + [JsonProperty("email")] + public string Email { get; set; } + [JsonProperty("password")] + public string Password { get; set; } + } + + [JsonProperty("user1")] + public Account User1 { get; set; } + [JsonProperty("user2")] + public Account User2 { get; set; } + } +} diff --git a/test/Discord.Net.Tests/Tests.cs b/test/Discord.Net.Tests/Tests.cs index ef01833cb..b1899742e 100644 --- a/test/Discord.Net.Tests/Tests.cs +++ b/test/Discord.Net.Tests/Tests.cs @@ -10,21 +10,24 @@ namespace Discord.Net.Tests public class Tests { private const int EventTimeout = 5000; //Max time in milliseconds to wait for an event response from our test actions - private DiscordClient _bot1, _bot2; - private Server _testServer; - private Channel _testServerChannel; - private Random _random; - [TestInitialize] - public void Initialize() + private static Settings _settings; + private static DiscordClient _bot1, _bot2; + private static Server _testServer; + private static Channel _testServerChannel; + private static Random _random; + + [ClassInitialize] + public static void Initialize(TestContext testContext) { + _settings = Settings.Load(); _random = new Random(); _bot1 = new DiscordClient(); _bot2 = new DiscordClient(); - _bot1.Connect(Settings.Test1_Username, Settings.Test1_Password).Wait(); - _bot2.Connect(Settings.Test2_Username, Settings.Test2_Password).Wait(); + _bot1.Connect(_settings.User1.Email, _settings.User1.Password).Wait(); + _bot2.Connect(_settings.User2.Email, _settings.User2.Password).Wait(); //Cleanup existing servers Task.WaitAll(_bot1.Servers.Select(x => _bot1.LeaveServer(x)).ToArray()); @@ -58,10 +61,10 @@ namespace Discord.Net.Tests private void TestCreateRoom(string type) { Channel channel = null; - string name = $"test_{_random.Next()}"; + string name = $"#test_{_random.Next()}"; AssertEvent( "ChannelCreated event never received", - () => channel = _bot1.CreateChannel(_testServer, name, type).Result, + () => channel = _bot1.CreateChannel(_testServer, name.Substring(1), type).Result, x => _bot2.ChannelCreated += x, x => _bot2.ChannelCreated -= x, (s, e) => e.Channel.Name == name); @@ -74,8 +77,8 @@ namespace Discord.Net.Tests (s, e) => e.Channel.Name == name); } - [TestCleanup] - public void Cleanup() + [ClassCleanup] + public static void Cleanup() { if (_bot1.IsConnected) Task.WaitAll(_bot1.Servers.Select(x => _bot1.LeaveServer(x)).ToArray()); @@ -86,22 +89,25 @@ namespace Discord.Net.Tests _bot2.Disconnect().Wait(); } - private void AssertEvent(string msg, Action action, Action> addEvent, Action> removeEvent, Func test = null) + private static void AssertEvent(string msg, Action action, Action> addEvent, Action> removeEvent, Func test = null) { - ManualResetEvent trigger = new ManualResetEvent(false); + ManualResetEventSlim trigger = new ManualResetEventSlim(false); bool result = false; EventHandler handler = (s, e) => { if (test != null) + { result |= test(s, e); + trigger.Set(); + } else result = true; }; addEvent(handler); action(); - trigger.WaitOne(EventTimeout); + trigger.Wait(EventTimeout); removeEvent(handler); Assert.AreEqual(true, result, msg); diff --git a/test/Discord.Net.Tests/config.json.example b/test/Discord.Net.Tests/config.json.example new file mode 100644 index 000000000..371dd6a5f --- /dev/null +++ b/test/Discord.Net.Tests/config.json.example @@ -0,0 +1,10 @@ +{ + "user1": { + "email": "user1@example.com", + "password": "password123" + }, + "user2": { + "email": "user2@example.com", + "password": "password456" + } +} \ No newline at end of file diff --git a/test/Discord.Net.Tests/packages.config b/test/Discord.Net.Tests/packages.config new file mode 100644 index 000000000..8857349f7 --- /dev/null +++ b/test/Discord.Net.Tests/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file