protected internal virtual void OnOptionsChange(ExtendedAuthorizationOptions options, string name) { this.Logger.LogDebugIfEnabled($"Options-change in \"{this.GetType()}\", options of type \"{options?.GetType()}\" and name {(name != null ? $"\"{name}\"" : "null")}. Setting permission-providers and role-providers to null."); lock (this.PermissionProvidersLock) { this._permissionProviders = null; } lock (this.RoleProvidersLock) { this._roleProviders = null; } }
protected internal virtual async Task <WindowsRoleProvider> CreateWindowsRoleProviderAsync(LoggerFactoryMock loggerFactory, ExtendedAuthorizationOptions options = null) { return(await Task.FromResult(new WindowsRoleProvider(await this.CreateMemoryCacheAsync(), new ClaimsPrincipalHelper(), loggerFactory, await this.CreateOptionsMonitorAsync(options)))); }
protected internal virtual async Task <IOptionsMonitor <ExtendedAuthorizationOptions> > CreateOptionsMonitorAsync(ExtendedAuthorizationOptions options = null) { return(await Task.FromResult(Mock.Of <IOptionsMonitor <ExtendedAuthorizationOptions> >(optionsMonitor => optionsMonitor.CurrentValue == (options ?? new ExtendedAuthorizationOptions())))); }
protected internal virtual async Task GetRolesAsyncTest(bool builtInRolesEnabled, string domain, string errorMessage, bool machineRolesEnabled, IPrincipal principal, IdentityReferenceCollection windowsGroups) { if (domain == null) { throw new ArgumentNullException(nameof(domain)); } if (principal == null) { throw new ArgumentNullException(nameof(principal)); } if (windowsGroups == null) { throw new ArgumentNullException(nameof(windowsGroups)); } var options = new ExtendedAuthorizationOptions { Roles = { Windows = { BuiltInRolesEnabled = builtInRolesEnabled, MachineRolesEnabled = machineRolesEnabled } } }; var expectedRoles = windowsGroups.AsRoles(options.Roles.Windows); using (var loggerFactory = new LoggerFactoryMock()) { var windowsRoleProvider = await this.CreateWindowsRoleProviderAsync(loggerFactory, options); var roles = (await windowsRoleProvider.GetRolesAsync(principal)).ToArray(); Assert.AreEqual(expectedRoles.Count, roles.Length, errorMessage); for (var i = 0; i < roles.Length; i++) { var role = roles[i]; // ReSharper disable All if (!builtInRolesEnabled && !machineRolesEnabled) { Assert.IsTrue(role.StartsWith($"{domain}\\", StringComparison.OrdinalIgnoreCase), errorMessage); } else if (builtInRolesEnabled && !machineRolesEnabled) { Assert.IsFalse(role.StartsWith(Environment.MachineName, StringComparison.OrdinalIgnoreCase), errorMessage); } else if (!builtInRolesEnabled && machineRolesEnabled) { Assert.IsTrue(role.StartsWith($"{domain}\\", StringComparison.OrdinalIgnoreCase) || role.StartsWith(Environment.MachineName, StringComparison.OrdinalIgnoreCase), errorMessage); } // ReSharper restore All Assert.AreEqual(expectedRoles.ElementAt(i), role, errorMessage); } } }