Skill
api-tester
Generate and run API test suites — endpoint validation, auth flows, error scenarios, rate limit testing, and schema validation. Use when the user says "test the API", "API test suite", "validate endpoints", or needs to verify API behavior against its specification.
From project-orchestratorInstall
1
Run in your terminal$
npx claudepluginhub vivekmano27/agent-orchestrator --plugin project-orchestratorTool Access
This skill is limited to using the following tools:
ReadBashGrepGlob
Skill Content
API Tester Skill
Comprehensive API testing with automated test generation.
Test Categories
- CRUD Operations — Create, Read, Update, Delete for each resource
- Authentication — Login, token refresh, unauthorized access
- Validation — Missing fields, invalid types, boundary values
- Error Handling — 404, 409, 422, 500 responses
- Pagination — Page boundaries, sorting, filtering
- Rate Limiting — Verify limits are enforced
- Authorization — Role-based access, resource ownership
Test Template
describe('POST /api/v1/users', () => {
it('201 — creates user with valid data', async () => {
const res = await request(app)
.post('/api/v1/users')
.set('Authorization', `Bearer ${adminToken}`)
.send({ email: 'new@test.com', name: 'Test', password: 'Pass123!' });
expect(res.status).toBe(201);
expect(res.body.data.email).toBe('new@test.com');
expect(res.body.data.passwordHash).toBeUndefined(); // never expose
});
it('400 — rejects missing email', async () => {
const res = await request(app)
.post('/api/v1/users')
.set('Authorization', `Bearer ${adminToken}`)
.send({ name: 'Test', password: 'Pass123!' });
expect(res.status).toBe(400);
expect(res.body.error.code).toBe('VALIDATION_ERROR');
});
it('401 — rejects unauthenticated request', async () => {
const res = await request(app)
.post('/api/v1/users')
.send({ email: 'new@test.com', name: 'Test', password: 'Pass123!' });
expect(res.status).toBe(401);
});
it('409 — rejects duplicate email', async () => {
// First create
await request(app).post('/api/v1/users')
.set('Authorization', `Bearer ${adminToken}`)
.send({ email: 'dup@test.com', name: 'First', password: 'Pass123!' });
// Duplicate
const res = await request(app).post('/api/v1/users')
.set('Authorization', `Bearer ${adminToken}`)
.send({ email: 'dup@test.com', name: 'Second', password: 'Pass123!' });
expect(res.status).toBe(409);
});
});
Similar Skills
Stats
Parent Repo Stars0
Parent Repo Forks0
Last CommitMar 15, 2026