I'm neck deep in this exact kind of testing right now. Web applications are particularly tricky to test authorization properly. The data setup can be difficult, because you need to create arbitrary users, and assign them roles. You also need to test your "standard" roles. Every HTTP request, button and icon needs testing for both "happy" path and "unhappy" path.
A couple of scenario outlines per link, per page will work. Also a couple of scenario outlines per web page simulating someone who has bookmarked a link to the page.
Scenario Outline: Authorized users can see the edit blog post link
Given a blog post exists
And a user exists with the "<Role>" role
When the user views the blog post
Then the "Edit Blog Post" link should be visible
Examples:
| Role |
| Admin |
| Power User |
Scenario Outline: Unauthorized users cannot see the edit blog post link
Given a blog post exists
And a user exists with the "<Role>" role
When the user views the blog post
Then the "Edit Blog Post" link should not be visible
Examples:
| Role |
| Carrier |
| Advertiser |
You basically need to repeat this test on every type of page that has an edit blog post link, for example. You also want to guard against people deep linking or bookmarking pages:
Scenario Outline: Authorized users can get to the edit blog post page
Given a blog post exists
And a user exists with the "<Role>" role
When the user edits the blog post
Then the user should be allowed access
Examples:
| Role |
| Admin |
| Power User |
Scenario Outline: Unauthorized users cannot go to the edit blog post page
Given a blog post exists
And a user exists with the "<Role>" role
When the user edits the blog post
Then the user should be denied access
Examples:
| Role |
| Carrier |
| Advertiser |
You also should guard against roles being revoked after loading a page, and then submitting a form:
Scenario Outline: Authorized users cannot save blog posts after access is revoked
Given a blog post exists
And a user exists with the "<Role>" role
When the user edits the blog post
And the user has the "<Role>" role revoked
And the user saves the blog post
Then the user should be denied access
Examples:
| Role |
| Admin |
| Power User |
Deep diving into scenarios like this forces you to think of all the ways people can attempt to circumvent permissions checks. This exposes the true cost of enforcing security on a system. It was a little mind boggling for me when I first started testing this way. The cost of enforcing permissions was much higher than I anticipated, but spelling out the test case scenarios is also good justification for the cost. It forces the business owner to realize how important and big this kind of testing is.