public async Task RefereshToken_When_Refresh_Token_Is_Valid()
        {
            var assertDatabase = await RfidDatabaseAssert.CreateAsync();

            var requestModel = Examples.Administrator();

            await RfidHttpClient.RegisterUserAsync(requestModel);

            using (var genResponse = await RfidHttpClient.GenerateAuthTokenAsync(requestModel.Email, requestModel.Password))
            {
                var jtoken = await genResponse.Content.AsJObjectAsync();

                using (var refreshResponse = await RfidHttpClient.RefreshAuthTokenAsync(jtoken.Token(), jtoken.RefreshToken()))
                {
                    await AssertAuthTokenResponseAsync(refreshResponse, System.Net.HttpStatusCode.OK);

                    var rtoken = await refreshResponse.Content.AsJObjectAsync();

                    Assert.NotEqual(expected: jtoken.Token(), actual: rtoken.Token());
                    Assert.NotEqual(expected: jtoken.RefreshToken(), actual: rtoken.RefreshToken());
                }
            }

            await assertDatabase.AssertCntAsync(requestModel);
        }
        public async Task RefreshToken_When_Invalid_Data(String token, String refreshToken)
        {
            var assertDatabase = await RfidDatabaseAssert.CreateAsync();

            using (var httpResponse = await RfidHttpClient.RefreshAuthTokenAsync(token, refreshToken))
            {
                await AssertAuthTokenResponseAsync(httpResponse, System.Net.HttpStatusCode.BadRequest);
            }

            await assertDatabase.AssertCntAsync();
        }
        public async Task RefreshToken_When_Auth_Token_Generated_With_Correct_Alg_But_User_Does_Not_Exists()
        {
            var assertDatabase = await RfidDatabaseAssert.CreateAsync();

            var auth      = new RFID.REST.Areas.Auth.Services.Auth(null, null, Settings.GetDevelopmentAuthSettings());
            var fakeToken = auth.GenerateToken("*****@*****.**", UserRoles.Admin);

            using (var httpResponse = await RfidHttpClient.RefreshAuthTokenAsync(fakeToken.Token, fakeToken.RefreshToken))
            {
                await AssertAuthTokenResponseAsync(httpResponse, System.Net.HttpStatusCode.NotFound);
            }

            await assertDatabase.AssertCntAsync();
        }
        public async Task RefreshToken_When_Auth_Token_Generated_With_Different_Alg()
        {
            var assertDatabase = await RfidDatabaseAssert.CreateAsync();

            var requestModel = Examples.Administrator();

            await RfidHttpClient.RegisterUserAsync(requestModel);

            var auth      = new RFID.REST.Areas.Auth.Services.Auth(null, null, Settings.GetDevelopmentAuthSettings());
            var fakeToken = auth.GenerateToken(requestModel.Email, UserRoles.Admin, SecurityAlgorithms.HmacSha384);

            using (var httpResponse = await RfidHttpClient.RefreshAuthTokenAsync(fakeToken.Token, fakeToken.RefreshToken))
            {
                await AssertAuthTokenResponseAsync(httpResponse, System.Net.HttpStatusCode.NotFound);
            }

            await assertDatabase.AssertCntAsync(requestModel);
        }
        public async Task RefreshToken_When_User_Refresh_Token_Is_Invalid()
        {
            var assertDatabase = await RfidDatabaseAssert.CreateAsync();

            var requestModel = Examples.Administrator();

            await RfidHttpClient.RegisterUserAsync(requestModel);

            using (var genResponse = await RfidHttpClient.GenerateAuthTokenAsync(requestModel.Email, requestModel.Password))
            {
                var jtoken = await genResponse.Content.AsJObjectAsync();

                using (var refreshResponse = await RfidHttpClient.RefreshAuthTokenAsync(jtoken.Token(), Path.GetRandomFileName()))
                {
                    await AssertAuthTokenResponseAsync(refreshResponse, System.Net.HttpStatusCode.NotFound);
                }
            }

            await assertDatabase.AssertCntAsync(requestModel);
        }