using System; using Xunit; using Newtonsoft.Json.Linq; using FluentAssertions; namespace raven_integration { public class auth { /// /// /// [Fact] public async void BadLoginShouldNotWork() { //Expect status code 401 and result: // {{ // "error": { // "code": "2003", // "message": "Authentication failed" // } // }} dynamic d = new JObject(); d.login = "BOGUS"; d.password = "ACCOUNT"; ApiResponse a = await Util.PostAsync("auth", null, d.ToString()); Util.ValidateErrorCodeResponse(a, 2003, 401); } //NOTE: These tests are for Debug builds, they should still pass in a release build because none of the creds will work and it checks for 401 only //but a true test of these JWT tokens is only in server debug mode /// /// /// [Fact] public async void JWTExpiredTokenShouldFail() { ApiResponse a = await Util.GetAsync("build-mode", await Util.GetTokenAsync("superuser", "l3tm3in")); var BuildMode = a.ObjectResponse["data"]["buildMode"].Value(); if (BuildMode == "DEBUG") { a = await Util.GetAsync("translation/list", await Util.GetTokenAsync("INTEGRATION_TEST", "EXPIRED"));//lowest level test user because there are no limits on this route except to be authenticated Util.ValidateHTTPStatusCode(a, 401); } } /// /// /// [Fact] public async void JWTWrongIssuerShouldFail() { ApiResponse a = await Util.GetAsync("build-mode", await Util.GetTokenAsync("superuser", "l3tm3in")); var BuildMode = a.ObjectResponse["data"]["buildMode"].Value(); if (BuildMode == "DEBUG") { a = await Util.GetAsync("translation/list", await Util.GetTokenAsync("INTEGRATION_TEST", "WRONG_ISSUER"));//lowest level test user because there are no limits on this route except to be authenticated Util.ValidateHTTPStatusCode(a, 401); } } /// /// /// [Fact] public async void JWTNoAlgorithmShouldFail() { ApiResponse a = await Util.GetAsync("build-mode", await Util.GetTokenAsync("superuser", "l3tm3in")); var BuildMode = a.ObjectResponse["data"]["buildMode"].Value(); if (BuildMode == "DEBUG") { a = await Util.GetAsync("translation/list", await Util.GetTokenAsync("INTEGRATION_TEST", "NO_ALGORITHM")); Util.ValidateHTTPStatusCode(a, 401); } } /// /// /// [Fact] public async void JWTBadSecretShouldFail() { ApiResponse a = await Util.GetAsync("build-mode", await Util.GetTokenAsync("superuser", "l3tm3in")); var BuildMode = a.ObjectResponse["data"]["buildMode"].Value(); if (BuildMode == "DEBUG") { a = await Util.GetAsync("translation/list", await Util.GetTokenAsync("INTEGRATION_TEST", "WRONG_SECRET")); Util.ValidateHTTPStatusCode(a, 401); } } /// /// /// [Fact] public async void JWTTruncatedSignatureShouldFail() { ApiResponse a = await Util.GetAsync("build-mode", await Util.GetTokenAsync("superuser", "l3tm3in")); var BuildMode = a.ObjectResponse["data"]["buildMode"].Value(); if (BuildMode == "DEBUG") { a = await Util.GetAsync("translation/list", await Util.GetTokenAsync("INTEGRATION_TEST", "TRUNCATED_SIGNATURE")); Util.ValidateHTTPStatusCode(a, 401); } } /// /// /// [Fact] public async void JWTTransposedSignatureShouldFail() { ApiResponse a = await Util.GetAsync("build-mode", await Util.GetTokenAsync("superuser", "l3tm3in")); var BuildMode = a.ObjectResponse["data"]["buildMode"].Value(); if (BuildMode == "DEBUG") { a = await Util.GetAsync("translation/list", await Util.GetTokenAsync("INTEGRATION_TEST", "TRANSPOSE_SIGNATURE")); Util.ValidateHTTPStatusCode(a, 401); } } //================================================== }//eoc }//eons