| @@ -14,5 +14,17 @@ namespace Discord.Tests.Framework.Mocks.Rest | |||||
| Verified = true, | Verified = true, | ||||
| Avatar = "cdd7ae679ef37ce03e097221c70aeed6" | Avatar = "cdd7ae679ef37ce03e097221c70aeed6" | ||||
| }; | }; | ||||
| public static User BotSelfUser => new User() | |||||
| { | |||||
| Id = 145584102551060480, | |||||
| Username = "foxboat", | |||||
| Discriminator = "8888", | |||||
| Email = null, | |||||
| MfaEnabled = true, | |||||
| Verified = true, | |||||
| Avatar = "5f0be46cea584d2225e6c15e8418fb52", | |||||
| Bot = true | |||||
| }; | |||||
| } | } | ||||
| } | } | ||||
| @@ -16,8 +16,14 @@ namespace Discord.Tests.Framework.Routes | |||||
| public static object Me(string json, IReadOnlyDictionary<string, string> requestHeaders) | public static object Me(string json, IReadOnlyDictionary<string, string> requestHeaders) | ||||
| { | { | ||||
| if (!requestHeaders.ContainsKey("authorization")) throw new HttpException(HttpStatusCode.Forbidden); | if (!requestHeaders.ContainsKey("authorization")) throw new HttpException(HttpStatusCode.Forbidden); | ||||
| if (requestHeaders["authorization"] != UserToken) throw new HttpException(HttpStatusCode.Forbidden); | |||||
| return UserMocks.SelfUser; | |||||
| if (requestHeaders["authorization"] != UserToken | |||||
| && requestHeaders["authorization"] != $"Bot {BotToken}" | |||||
| && requestHeaders["authorization"] != $"Bearer {BearerToken}") throw new HttpException(HttpStatusCode.Forbidden); | |||||
| if (requestHeaders["authorization"] == UserToken || requestHeaders["authorization"] == $"Bearer {BearerToken}") | |||||
| return UserMocks.SelfUser; | |||||
| else | |||||
| return UserMocks.BotSelfUser; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -31,5 +31,29 @@ namespace Discord.Tests.Rest | |||||
| var client = fixture.Client; | var client = fixture.Client; | ||||
| await Assert.ThrowsAsync<ArgumentException>(async () => await client.LoginAsync(TokenType.User, "token.invalid")); | await Assert.ThrowsAsync<ArgumentException>(async () => await client.LoginAsync(TokenType.User, "token.invalid")); | ||||
| } | } | ||||
| [Fact] | |||||
| public async Task LoginAsBot() | |||||
| { | |||||
| var client = fixture.Client; | |||||
| await client.LoginAsync(TokenType.Bot, Routes.BotToken); | |||||
| } | |||||
| [Fact] | |||||
| public async Task LoginAsBotWithInvalidToken() | |||||
| { | |||||
| var client = fixture.Client; | |||||
| await Assert.ThrowsAsync<ArgumentException>(async () => await client.LoginAsync(TokenType.Bot, "token.invalid")); | |||||
| } | |||||
| [Fact] | |||||
| public async Task LoginAsBearer() | |||||
| { | |||||
| var client = fixture.Client; | |||||
| await client.LoginAsync(TokenType.Bearer, Routes.BearerToken); | |||||
| } | |||||
| [Fact] | |||||
| public async Task LoginAsBearerWithInvalidToken() | |||||
| { | |||||
| var client = fixture.Client; | |||||
| await Assert.ThrowsAsync<ArgumentException>(async () => await client.LoginAsync(TokenType.Bearer, "token.invalid")); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||