| @@ -77,6 +77,8 @@ namespace Discord | |||||
| // 59 char token | // 59 char token | ||||
| [InlineData("MTk4NjIyNDgzNDcxOTI1MjQ4.Cl2FMQ.ZnCjm1XVW7vRze4b7Cq4se7kKWs")] | [InlineData("MTk4NjIyNDgzNDcxOTI1MjQ4.Cl2FMQ.ZnCjm1XVW7vRze4b7Cq4se7kKWs")] | ||||
| [InlineData("MTk4NjIyNDgzNDcxOTI1MjQ4.Cl2FMQ.ZnCjm1XVW7vRze4b7Cq4se7kKWss")] | [InlineData("MTk4NjIyNDgzNDcxOTI1MjQ4.Cl2FMQ.ZnCjm1XVW7vRze4b7Cq4se7kKWss")] | ||||
| // simulated token with a very old user id | |||||
| [InlineData("ODIzNjQ4MDEzNTAxMDcxMzY=.Cl2FMQ.ZnCjm1XVW7vRze4b7Cq4se7kKW")] | |||||
| public void TestBotTokenDoesNotThrowExceptions(string token) | public void TestBotTokenDoesNotThrowExceptions(string token) | ||||
| { | { | ||||
| // This example token is pulled from the Discord Docs | // This example token is pulled from the Discord Docs | ||||
| @@ -151,6 +153,10 @@ namespace Discord | |||||
| // cannot pass a ulong? as a param in InlineData, so have to have a separate param | // cannot pass a ulong? as a param in InlineData, so have to have a separate param | ||||
| // indicating if a value is null | // indicating if a value is null | ||||
| [InlineData("NDI4NDc3OTQ0MDA5MTk1NTIw", false, 428477944009195520)] | [InlineData("NDI4NDc3OTQ0MDA5MTk1NTIw", false, 428477944009195520)] | ||||
| // user id that has base 64 '=' padding | |||||
| [InlineData("ODIzNjQ4MDEzNTAxMDcxMzY=", false, 82364801350107136)] | |||||
| // user id that does not have '=' padding, and needs it | |||||
| [InlineData("ODIzNjQ4MDEzNTAxMDcxMzY", false, 82364801350107136)] | |||||
| // should return null w/o throwing other exceptions | // should return null w/o throwing other exceptions | ||||
| [InlineData("", true, 0)] | [InlineData("", true, 0)] | ||||
| [InlineData(" ", true, 0)] | [InlineData(" ", true, 0)] | ||||
| @@ -164,5 +170,37 @@ namespace Discord | |||||
| else | else | ||||
| Assert.Equal(expectedUserId, result); | Assert.Equal(expectedUserId, result); | ||||
| } | } | ||||
| [Theory] | |||||
| [InlineData("QQ", "QQ==")] // "A" encoded | |||||
| [InlineData("QUE", "QUE=")] // "AA" | |||||
| [InlineData("QUFB", "QUFB")] // "AAA" | |||||
| [InlineData("QUFBQQ", "QUFBQQ==")] // "AAAA" | |||||
| [InlineData("QUFBQUFB", "QUFBQUFB")] // "AAAAAA" | |||||
| // strings that already contain padding will be returned, even if invalid | |||||
| [InlineData("QUFBQQ==", "QUFBQQ==")] | |||||
| [InlineData("QUFBQQ=", "QUFBQQ=")] | |||||
| [InlineData("=", "=")] | |||||
| public void TestPadBase64String(string input, string expected) | |||||
| { | |||||
| Assert.Equal(expected, TokenUtils.PadBase64String(input)); | |||||
| } | |||||
| [Theory] | |||||
| // no null, empty, or whitespace | |||||
| [InlineData("", typeof(ArgumentNullException))] | |||||
| [InlineData(" ", typeof(ArgumentNullException))] | |||||
| [InlineData("\t", typeof(ArgumentNullException))] | |||||
| [InlineData(null, typeof(ArgumentNullException))] | |||||
| // cannot require 3 padding chars | |||||
| [InlineData("A", typeof(FormatException))] | |||||
| [InlineData("QUFBQ", typeof(FormatException))] | |||||
| public void TestPadBase64StringException(string input, Type type) | |||||
| { | |||||
| Assert.Throws(type, () => | |||||
| { | |||||
| TokenUtils.PadBase64String(input); | |||||
| }); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||