public void ApplyProfile <TSecurityProfile>() where TSecurityProfile : SecurityProfile, new() { var profile = new TSecurityProfile(); Publish.ConfigurationEvent(() => "Applying profile {0}.".FormatWith(profile.GetType().FullName)); Runtime.ApplyConfiguration(profile); }
public static ISecurityConfiguration Configure(Action <ConfigurationExpression> configurationExpression) { if (configurationExpression == null) { throw new ArgumentNullException("configurationExpression"); } Reset(); if (SecurityDoctor.Current.ScanForEventListenersOnConfigure) { SecurityDoctor.Current.ScanForEventListeners(); } Publish.ConfigurationEvent(() => "Configuring FluentSecurity."); lock (LockObject) { return(Publish.ConfigurationEvent(() => { var configuration = new SecurityConfiguration(configurationExpression); SecurityConfiguration.SetConfiguration(configuration); return SecurityConfiguration.Current; }, config => "Finished configuring FluentSecurity.")); } }
public IPolicyContainerConfiguration RemovePolicy <TSecurityPolicy>(Func <TSecurityPolicy, bool> predicate = null) where TSecurityPolicy : class, ISecurityPolicy { Publish.ConfigurationEvent(() => "Removing policies from {0} action {1}.".FormatWith(ControllerName, ActionName)); IEnumerable <ISecurityPolicy> matchingPolicies; if (predicate == null) { matchingPolicies = _policies.Where(p => p.IsPolicyOf <TSecurityPolicy>()).ToList(); } else { matchingPolicies = _policies.Where(p => p.IsPolicyOf <TSecurityPolicy>() && predicate.Invoke(p.EnsureNonLazyPolicyOf <TSecurityPolicy>()) ).ToList(); } foreach (var matchingPolicy in matchingPolicies) { var policy = matchingPolicy; _policies.Remove(matchingPolicy); Publish.ConfigurationEvent(() => "- Removed policy {0} [{1}].".FormatWith(policy.GetPolicyType().FullName, policy is ILazySecurityPolicy ? "Lazy" : "Instance")); } return(this); }
public void Should_produce_configuration_event_with_timing_when_event_listener_is_registered() { // Arrange const int expectedMilliseconds = 9; var expectedResult = new { }; const string expectedMessage = "Message"; var events = new List <ISecurityEvent>(); SecurityDoctor.Register(events.Add); // Act var result = Publish.ConfigurationEvent(() => { Thread.Sleep(expectedMilliseconds + 5); return(expectedResult); }, r => expectedMessage); // Assert Assert.That(result, Is.EqualTo(expectedResult)); var @event = events.Single(); Assert.That(@event.CorrelationId, Is.EqualTo(SecurityConfigurator.CorrelationId)); Assert.That(@event.Message, Is.EqualTo(expectedMessage)); Assert.That(@event.CompletedInMilliseconds, Is.GreaterThanOrEqualTo(expectedMilliseconds)); }
private void ApplyProfile(Type profileType) { if (Activator.CreateInstance(profileType) is SecurityProfile profile) { Publish.ConfigurationEvent(() => "Applying profile {0}.".FormatWith(profile.GetType().FullName)); Runtime.ApplyConfiguration(profile); } }
public void Scan(Action <ProfileScanner> scan) { Publish.ConfigurationEvent(() => "Scanning for profiles"); var profileScanner = new ProfileScanner(); scan.Invoke(profileScanner); var profiles = profileScanner.Scan().ToList(); profiles.ForEach(ApplyProfile); }
public void Should_produce_configuration_event_when_event_listener_is_registered() { // Arrange const string expectedMessage = "Message"; var events = new List <ISecurityEvent>(); SecurityDoctor.Register(events.Add); // Act Publish.ConfigurationEvent(() => expectedMessage); // Assert var @event = events.Single(); Assert.That(@event.CorrelationId, Is.EqualTo(SecurityConfigurator.CorrelationId)); Assert.That(@event.Message, Is.EqualTo(expectedMessage)); }
public IPolicyContainerConfiguration AddPolicy(ISecurityPolicy securityPolicy) { Publish.ConfigurationEvent(() => "Updating policies for {0} action {1} using {2}.".FormatWith(ControllerName, ActionName, PolicyAppender.GetType().FullName)); var policiesBeforeUpdate = new ISecurityPolicy[_policies.Count]; _policies.CopyTo(policiesBeforeUpdate, 0); PolicyAppender.UpdatePolicies(securityPolicy, _policies); var policiesRemoved = policiesBeforeUpdate.Except(_policies).ToList(); policiesRemoved.Each(p => Publish.ConfigurationEvent(() => "- Removed policy {0} [{1}].".FormatWith(p.GetPolicyType().FullName, p is ILazySecurityPolicy ? "Lazy" : "Instance"))); var policiesAdded = _policies.Except(policiesBeforeUpdate).ToList(); policiesAdded.Each(p => Publish.ConfigurationEvent(() => "- Added policy {0} [{1}].".FormatWith(p.GetPolicyType().FullName, p is ILazySecurityPolicy ? "Lazy" : "Instance"))); return(this); }
public void Should_return_result_when_no_event_listener_is_registered() { // Arrange SecurityDoctor.Reset(); var context = TestDataFactory.CreateSecurityContext(false); var expectedResult1 = new {}; var expectedResult2 = new {}; var expectedResult3 = new {}; // Act var result1 = Publish.ConfigurationEvent(() => expectedResult1, r => null); var result2 = Publish.RuntimeEvent(() => expectedResult2, r => null, context); var result3 = Publish.RuntimePolicyEvent(() => expectedResult3, r => null, context); // Assert Assert.That(result1, Is.EqualTo(expectedResult1)); Assert.That(result2, Is.EqualTo(expectedResult2)); Assert.That(result3, Is.EqualTo(expectedResult3)); }