public async Task SecurityDisabled()
        {
            // Arrange
            var requirements = new[] { new AuthenticatedWhenEnabledRequirement() };
            var context      = new AuthorizationHandlerContext(requirements, null, null);
            var handler      = new MiningMonitorAuthorizationHandler(_settingsService.Object);

            // Act
            await handler.HandleAsync(context);

            // Assert
            Assert.That(context, Has.Property(nameof(context.HasSucceeded)).True);
        }
        public async Task AuthenticatedWhenEnabledRequirementFailsWhenNotAuthenticated()
        {
            // Arrange
            var requirements = new[] { new AuthenticatedWhenEnabledRequirement() };
            var principal    = new GenericPrincipal(new GenericIdentity(""), null);
            var context      = new AuthorizationHandlerContext(requirements, principal, null);

            _settingsService.Setup(m => m.GetSettingAsync("EnableSecurity", CancellationToken.None))
            .ReturnsAsync(() => (true, "true"));

            var handler = new MiningMonitorAuthorizationHandler(_settingsService.Object);

            // Act
            await handler.HandleAsync(context);

            // Assert
            Assert.That(context, Has.Property(nameof(context.HasSucceeded)).False);
        }
        public async Task HasRoleWhenEnabledRequirement()
        {
            // Arrange
            const string role         = "test-role";
            var          requirements = new[] { new HasRoleWhenEnabledRequirement(role) };
            var          principal    = new GenericPrincipal(new GenericIdentity("test", "test"), new[] { role });
            var          context      = new AuthorizationHandlerContext(requirements, principal, null);

            _settingsService.Setup(m => m.GetSettingAsync("EnableSecurity", CancellationToken.None))
            .ReturnsAsync(() => (true, "true"));

            var handler = new MiningMonitorAuthorizationHandler(_settingsService.Object);

            // Act
            await handler.HandleAsync(context);

            // Assert
            Assert.That(context, Has.Property(nameof(context.HasSucceeded)).True);
        }
        public async Task OwnResourceWhenEnabledRequirementFailsWhenResourceIsNotOwned()
        {
            // Arrange
            var requirements  = new[] { new OwnResourceWhenEnabledRequirement("id") };
            var principal     = new GenericPrincipal(new GenericIdentity("test-id"), null);
            var routeData     = new RouteData();
            var httpContext   = new Mock <HttpContext>();
            var actionContext = new ActionContext(httpContext.Object, routeData, new ActionDescriptor());
            var filterContext = new AuthorizationFilterContext(actionContext, new List <IFilterMetadata>());
            var context       = new AuthorizationHandlerContext(requirements, principal, filterContext);

            routeData.Values.Add("id", "other-id");
            _settingsService.Setup(m => m.GetSettingAsync("EnableSecurity", CancellationToken.None))
            .ReturnsAsync(() => (true, "true"));

            var handler = new MiningMonitorAuthorizationHandler(_settingsService.Object);

            // Act
            await handler.HandleAsync(context);

            // Assert
            Assert.That(context, Has.Property(nameof(context.HasSucceeded)).False);
        }