Skip to content

Instantly share code, notes, and snippets.

@chandu
Created March 28, 2012 19:44
Show Gist options
  • Save chandu/2229857 to your computer and use it in GitHub Desktop.
Save chandu/2229857 to your computer and use it in GitHub Desktop.
FluentSecurity - Caching scenarios

FluentSecurity - Policy Caching scenarios

Please feel free to contribute! Improvements and/or new scenarios are most welcome.

Controllers and actions

BlogController

  • ListPosts
  • AddPost
  • EditPost
  • DeletePost

PublishingController

  • ListPosts
  • PublishPost

Policies

  • WriterPolicy
  • PublisherPolicy

Scenarios

Scenario 1

Example:

configuration.ForAllControllers().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest);

Given the cache strategy of all controllers is set to PerHttpRequest for WriterPolicy
When enforcing WriterPolicy for BlogController AddPost (or First action method accessed)
Should cache result PerHttpRequest
Should cache result with key "*_*_WriterPolicy"

Scenario 2

Example:

configuration.For<BlogController>().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest);

Given the cache strategy of BlogController is set to PerHttpRequest for WriterPolicy
When enforcing WriterPolicy for BlogController AddPost (or First action method accessed)
Should cache result PerHttpRequest
Should cache result with key "BlogController_*_WriterPolicy"

Scenario 3

Example:

configuration.For<BlogController>(x => x.AddPost()).CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest);

Given the cache strategy of BlogController AddPost is set to PerHttpRequest for WriterPolicy
When enforcing WriterPolicy for BlogController AddPost
Should cache result PerHttpRequest
Should cache result with key "BlogController_AddPost_WriterPolicy"

Scenario 4

Example:

configuration.For<BlogController>().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest);
configuration.For<BlogController>(x => x.AddPost()).CacheResultsOf<WriterPolicy>(Cache.DoNotCache);

Given the cache strategy of BlogController is set to PerHttpRequest for WriterPolicy
And the cache strategy of BlogController AddPost is set to DoNotCache for WriterPolicy
When enforcing WriterPolicy for BlogController AddPost
Should not cache result

Scenario 5

Example:

configuration.For<BlogController>(x => x.AddPost()).CacheResultsOf<WriterPolicy>(Cache.PerHttpSession);
configuration.For<BlogController>().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest);

Given the cache strategy of BlogController AddPost is set to PerHttpSession for WriterPolicy
And the cache strategy of BlogController is set to PerHttpRequest for WriterPolicy
When enforcing WriterPolicy for BlogController AddPost
Should cache result PerHttpRequest
Should cache result with key "BlogController_*_WriterPolicy"

Scenario 6

Example:

configuration.ForAllControllers().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest);
configuration.For(scan => 
{
	scan.AssembliesFromApplicationBaseDirectory();
	scan.With<ListActionsConvention>();
}).CacheResultsOf<WriterPolicy>(Cache.PerHttpSession);

Given the cache strategy of all controllers is set to PerHttpRequest for WriterPolicy
And the cache strategy of controller actions matched by ListActionsConvention is set to PerHttpRequest for WriterPolicy
When enforcing WriterPolicy for BlogController ListPosts
Should cache result PerHttpRequest
Should cache result with key "???_???_WriterPolicy"

Scenario 7

Example:

configuration.ForAllControllers().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest, By.ControllerAction);

Given the cache strategy of all controllers is set to PerHttpRequest for WriterPolicy
When enforcing WriterPolicy for BlogController AddPost
Should cache result PerHttpRequest
Should cache result with key "BlogController_AddPost_WriterPolicy"

Scenario 8

Example:

configuration.ForAllControllers().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest, By.Controller);

Given the cache strategy of all controllers is set to PerHttpRequest for WriterPolicy
When enforcing WriterPolicy for BlogController AddPost
Should cache result PerHttpRequest
Should cache result with key "BlogController_*_WriterPolicy"

Scenario 9

Example:

configuration.ForAllControllers().CacheResultsOf<WriterPolicy>(Cache.PerHttpRequest);
configuration.For<BlogController>().ClearCacheStrategies();

Given the cache strategy of all controllers is set to PerHttpRequest for WriterPolicy
And the cache strategies of BlogController is cleared
When enforcing WriterPolicy for BlogController AddPost
Should not cache result PerHttpRequest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment