Login Tests + Login as User with Token + Login as User with Invalid Token + Login as Bot with Token + Login as Bot with Invalid Tokenpull/62/head
| @@ -0,0 +1,56 @@ | |||||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| using Discord.Rest; | |||||
| namespace Discord.Tests.Rest | |||||
| { | |||||
| [TestClass] | |||||
| public class LoginTests | |||||
| { | |||||
| public static TestContext Context; | |||||
| private static DiscordClient _client; | |||||
| [ClassInitialize] | |||||
| 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(); | |||||
| } | |||||
| [TestMethod] | |||||
| [TestCategory("Login")] | |||||
| public async Task Test_Login_As_User() | |||||
| { | |||||
| Responses.Users.UserHandlers.Mode = Rest.Responses.Users.TestMode.User; | |||||
| await _client.Login(TokenType.User, "UserToken_Voltana"); | |||||
| } | |||||
| [TestMethod] | |||||
| [ExpectedException(typeof(Net.HttpException))] | |||||
| [TestCategory("Login")] | |||||
| public async Task Test_Login_As_User_With_Invalid_Token() | |||||
| { | |||||
| Responses.Users.UserHandlers.Mode = Rest.Responses.Users.TestMode.User; | |||||
| await _client.Login(TokenType.User, "UserToken-NotVoltana"); | |||||
| } | |||||
| [TestMethod] | |||||
| [TestCategory("Login")] | |||||
| public async Task Test_Login_As_Bot() | |||||
| { | |||||
| Responses.Users.UserHandlers.Mode = Rest.Responses.Users.TestMode.Bot; | |||||
| await _client.Login(TokenType.Bot, "UserToken_VoltanaBot"); | |||||
| } | |||||
| [TestMethod] | |||||
| [ExpectedException(typeof(Net.HttpException))] | |||||
| [TestCategory("Login")] | |||||
| public async Task Test_Login_As_Bot_With_Invalid_Token() | |||||
| { | |||||
| Responses.Users.UserHandlers.Mode = Rest.Responses.Users.TestMode.Bot; | |||||
| await _client.Login(TokenType.Bot, "UserToken-NotVoltanaBot"); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,38 @@ | |||||
| using Newtonsoft.Json; | |||||
| namespace Discord.Tests.Rest.Responses.Users | |||||
| { | |||||
| public class Mock_Me_User_Valid | |||||
| { | |||||
| [JsonProperty("id")] | |||||
| public string Id => "66078337084162048"; | |||||
| [JsonProperty("username")] | |||||
| public string Username => "Voltana"; | |||||
| [JsonProperty("discriminator")] | |||||
| public ushort Discriminator => 0001; | |||||
| [JsonProperty("avatar")] | |||||
| public string Avatar => "ec2b259bfe24686bf9d214b6bebe0834"; | |||||
| [JsonProperty("verified")] | |||||
| public bool IsVerified => true; | |||||
| [JsonProperty("email")] | |||||
| public string Email => "hello-i-am-not-real@foxbot.me"; | |||||
| } | |||||
| public class Mock_Me_Token_Valid | |||||
| { | |||||
| [JsonProperty("id")] | |||||
| public string Id => "66078337084162048"; | |||||
| [JsonProperty("username")] | |||||
| public string Username => "foxboat"; | |||||
| [JsonProperty("discriminator")] | |||||
| public ushort Discriminator => 0005; | |||||
| [JsonProperty("avatar")] | |||||
| public string Avatar => "ec2b259bfe24686bf9d214b6bebe0834"; | |||||
| [JsonProperty("verified")] | |||||
| public bool IsVerified => true; | |||||
| [JsonProperty("email")] | |||||
| public string Email => "hello-i-am-not-real@foxbot.me"; | |||||
| [JsonProperty("bot")] | |||||
| public bool Bot => true; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,46 @@ | |||||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | |||||
| using Newtonsoft.Json; | |||||
| using Discord.Net; | |||||
| using System.Net; | |||||
| using System; | |||||
| namespace Discord.Tests.Rest.Responses.Users | |||||
| { | |||||
| public static class UserHandlers | |||||
| { | |||||
| public static TestMode Mode; | |||||
| public static string Me_Handler(string method, string json) | |||||
| { | |||||
| switch (Mode) | |||||
| { | |||||
| case TestMode.User: | |||||
| return Me_User_Valid(method, json); | |||||
| case TestMode.Bot: | |||||
| return Me_Bot_Valid(method, json); | |||||
| default: | |||||
| throw new ArgumentException("TestMode was set incorrectly."); | |||||
| } | |||||
| } | |||||
| public static string Me_User_Valid(string method, string json) | |||||
| { | |||||
| Assert.AreEqual("GET", method, "Expected method to '/users/@me' is GET."); | |||||
| if (TestRestClient.Headers["authorization"] != "UserToken_Voltana") throw new HttpException((HttpStatusCode)401); | |||||
| return JsonConvert.SerializeObject(new Mock_Me_User_Valid()); | |||||
| } | |||||
| public static string Me_Bot_Valid(string method, string json) | |||||
| { | |||||
| Assert.AreEqual("GET", method, "Expected method to '/users/@me' is GET."); | |||||
| if (TestRestClient.Headers["authorization"] != "Bot UserToken_VoltanaBot") throw new HttpException((HttpStatusCode)401); | |||||
| return JsonConvert.SerializeObject(new Mock_Me_User_Valid()); | |||||
| } | |||||
| } | |||||
| public enum TestMode | |||||
| { | |||||
| User, | |||||
| Bot | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,40 @@ | |||||
| using Microsoft.VisualStudio.TestTools.UnitTesting; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| using Discord.Rest; | |||||
| namespace Discord.Tests.Rest | |||||
| { | |||||
| [TestClass] | |||||
| public class UserTests | |||||
| { | |||||
| public static TestContext Context; | |||||
| private static DiscordClient _client; | |||||
| [ClassInitialize] | |||||
| public static async Task 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"); | |||||
| } | |||||
| [TestMethod] | |||||
| [TestCategory("Users")] | |||||
| public static async Task Test_Get_Current_User() | |||||
| { | |||||
| var currentUser = await _client.GetCurrentUser(); | |||||
| Assert.AreEqual(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'"); | |||||
| } | |||||
| } | |||||
| } | |||||