mcpField
R
rbac-policy-tester

rbac-policy-tester

github.com/patricio0312revTesting & quality63260 installsUpdated 41w ago
Repository

About rbac-policy-tester

rbac-policy-tester is a skill for planning and checking role-based access control tests. It outlines a permission matrix, positive and negative tests across roles, CI gating, and coverage monitoring.

Key features

  1. 01Define a role and resource permission matrix
  2. 02Test every role with positive and negative cases
  3. 03Gate CI on permission tests
  4. 04Monitor test coverage

Use cases

  1. 01Plan access tests for users, orders, and reports
  2. 02Check allowed and denied actions across roles
  3. 03Add permission checks to CI

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/patricio0312rev/skills --skill rbac-policy-tester

After installing, type/rbac-policy-testerin Claude Code to confirm it loaded.

Details

From the project README

RBAC/Policy Tester

Comprehensive testing for role-based access control.

Permission Test Matrix

type Role = 'ADMIN' | 'MANAGER' | 'USER' | 'GUEST';
type Action = 'create' | 'read' | 'update' | 'delete';
type Resource = 'users' | 'orders' | 'reports';

const permissionMatrix: Record<Role, Record<Resource, Action[]>> = {
  ADMIN: {
    users: ['create', 'read', 'update', 'delete'],
    orders: ['create', 'read', 'update', 'delete'],
    reports: ['create', 'read', 'update', 'delete'],
  },
  MANAGER: {
    users: ['read', 'update'],
    orders: ['create', 'read', 'update'],
    reports: ['read', 'update'],
  },
  USER: {
    users: ['read'], // Only own profile
    orders: ['create', 'read'], // Only own orders
    reports: ['read'],
  },
  GUEST: {
    users: [],
    orders: [],
    reports: ['read'],
  },
};

describe('RBAC Tests', () => {
  Object.entries(permissionMatrix).forEach(([role, resources]) => {
    describe(\`Role: \${role}\`, () => {
      Object.entries(resources).forEach(([resource, actions]) => {
        actions.forEach(action => {
          it(\`should allow \${action} on \${resource}\`, async () => {
            const token = generateToken({ role });
            await request(app)
              .post(\`/api/\${resource}/\${action}\`)
              .set('Authorization', \`Bearer \${token}\`)
              .expect(200);
          });
        });

        // Test forbidden actions
        const allActions: Action[] = ['create', 'read', 'update', 'delete'];
        const forbidden = allActions.filter(a => !actions.includes(a));

        forbidden.forEach(action => {
          it(\`should deny \${action} on \${resource}\`, async () => {
            const token = generateToken({ role });
            await request(app)
              .post(\`/api/\${resource}/\${action}\`)
              .set('Authorization', \`Bearer \${token}\`)
              .expect(403);
          });
        });
      });
    });
  });
});

Output Checklist

  • Permission matrix defined
  • Test suite for all roles
  • Positive and negative tests
  • CI gating enabled
  • Coverage monitoring ENDFILE

Comments

Markdown supported