diff --git a/test/Discord.Net.Tests/Discord.Net.Tests.csproj b/test/Discord.Net.Tests/Discord.Net.Tests.csproj index 3526e12ca..4b5511611 100644 --- a/test/Discord.Net.Tests/Discord.Net.Tests.csproj +++ b/test/Discord.Net.Tests/Discord.Net.Tests.csproj @@ -55,11 +55,13 @@ - - + + - + + + diff --git a/test/Discord.Net.Tests/Rest/EndpointHandler.cs b/test/Discord.Net.Tests/Rest/Framework/EndpointHandler.cs similarity index 90% rename from test/Discord.Net.Tests/Rest/EndpointHandler.cs rename to test/Discord.Net.Tests/Rest/Framework/EndpointHandler.cs index 318139d13..9729890de 100644 --- a/test/Discord.Net.Tests/Rest/EndpointHandler.cs +++ b/test/Discord.Net.Tests/Rest/Framework/EndpointHandler.cs @@ -20,6 +20,7 @@ namespace Discord.Tests.Rest // /users Endpoints Handlers.Add("users/@me", Responses.Users.UserHandlers.Me_Handler); + Handlers.Add("users/96642168176807936", Responses.Users.UserHandlers.Id_User_Valid); } public string HandleMessage(string method, string endpoint, string json) diff --git a/test/Discord.Net.Tests/Rest/TestRestClient.cs b/test/Discord.Net.Tests/Rest/Framework/TestRestClient.cs similarity index 100% rename from test/Discord.Net.Tests/Rest/TestRestClient.cs rename to test/Discord.Net.Tests/Rest/Framework/TestRestClient.cs diff --git a/test/Discord.Net.Tests/Rest/Responses/Users/UserHandlers.cs b/test/Discord.Net.Tests/Rest/Responses/Users/UserHandlers.cs index b794500ed..f85538ad8 100644 --- a/test/Discord.Net.Tests/Rest/Responses/Users/UserHandlers.cs +++ b/test/Discord.Net.Tests/Rest/Responses/Users/UserHandlers.cs @@ -36,6 +36,12 @@ namespace Discord.Tests.Rest.Responses.Users if (TestRestClient.Headers["authorization"] != "Bot UserToken_VoltanaBot") throw new HttpException((HttpStatusCode)401); return JsonConvert.SerializeObject(new Mock_Me_User_Valid()); } + + public static string Id_User_Valid(string method, string json) + { + Assert.AreEqual("GET", method, "Expected method to '/users/:id' is GET"); + return JsonConvert.SerializeObject(new Mock_ID_PublicUser()); + } } public enum TestMode diff --git a/test/Discord.Net.Tests/Rest/Responses/Users/User_Mocks.cs b/test/Discord.Net.Tests/Rest/Responses/Users/User_Mocks.cs new file mode 100644 index 000000000..3b0310417 --- /dev/null +++ b/test/Discord.Net.Tests/Rest/Responses/Users/User_Mocks.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Discord.Tests.Rest.Responses.Users +{ + class Mock_ID_PublicUser + { + [JsonProperty("id")] + public string Id => "96642168176807936"; + [JsonProperty("username")] + public string Username => "Khionu"; + [JsonProperty("discriminator")] + public ushort Discriminator => 9999; + [JsonProperty("avatar")] + public string Avatar => "ceeff590f1e0e1ccae0afc89967131ff"; + } +} diff --git a/test/Discord.Net.Tests/Rest/UserTests.cs b/test/Discord.Net.Tests/Rest/UserTests.cs index 3998c2789..55e3664c8 100644 --- a/test/Discord.Net.Tests/Rest/UserTests.cs +++ b/test/Discord.Net.Tests/Rest/UserTests.cs @@ -15,26 +15,44 @@ namespace Discord.Tests.Rest private static DiscordClient _client; [ClassInitialize] - public static async Task Initialize(TestContext context) + public static void Initialize(TestContext context) { Context = context; _client = new DiscordClient(new DiscordConfig() { RestClientProvider = (url, ct) => new TestRestClient(url, ct) }); if (EndpointHandler.Instance == null) EndpointHandler.Instance = new EndpointHandler(); Responses.Users.UserHandlers.Mode = Rest.Responses.Users.TestMode.User; - await _client.Login(TokenType.User, "UserToken_Voltana"); + _client.Login(TokenType.User, "UserToken_Voltana").Wait(); } [TestMethod] [TestCategory("Users")] - public static async Task Test_Get_Current_User() + public async Task Test_Get_Current_User() { var currentUser = await _client.GetCurrentUser(); - Assert.AreEqual(66078337084162048, currentUser.Id, "Expected Id '66078337084162048'"); + Assert.AreEqual((UInt64)66078337084162048, currentUser.Id, "Expected Id '66078337084162048'"); Assert.AreEqual("Voltana", currentUser.Username, "Expected Name 'Voltana'"); Assert.AreEqual(0001, currentUser.Discriminator, "Expected Discriminator '0001'"); // Cannot Test Avatar URLs, Avatar ID not exposed publicly. Assert.AreEqual(true, currentUser.IsVerified, "Expected Verified 'true'"); Assert.AreEqual("hello-i-am-not-real@foxbot.me", currentUser.Email, "Expected Email 'hello-i-am-not-real@foxbot.me'"); + Assert.AreEqual(UserStatus.Unknown, currentUser.Status, "UserStatus should not be populated."); + Assert.AreEqual(false, currentUser.IsBot, "Expected IsBot 'false'"); + Assert.AreEqual("<@66078337084162048>", currentUser.Mention, "Expected Mention '<@66078337084162048>'"); + Assert.IsNull(currentUser.CurrentGame, "CurrentGame should not be populated."); + Assert.AreEqual(new DateTime(635714215032370000), currentUser.CreatedAt, "Expected Created At '635714215032370000'"); + } + [TestMethod] + [TestCategory("Users")] + public async Task Test_Get_User() + { + var user = await _client.GetUser(96642168176807936); + Assert.AreEqual((UInt64)96642168176807936, user.Id, "Expected Id '96642168176807936'"); + Assert.AreEqual("Khionu", user.Username, "Expected Name 'Khionu'"); + Assert.AreEqual(9999, user.Discriminator, "Expected Discriminator '0001'"); + // Cannot Test Avatar URLs, Avatar ID not exposed publicly. + Assert.AreEqual(false, user.IsBot, "Expected IsBot 'false'"); + Assert.AreEqual("<@!96642168176807936>", user.NicknameMention, "Expected Mention '<@!96642168176807936>'"); + Assert.AreEqual(new DateTime(635787084884180000), user.CreatedAt, "Expected Created At '635787084884180000'"); } } }