feat: add JsonPlaceholder test collection with public API tests

- Add apiTest/JsonPlaceholder/opencollection.yml
- Add Users/Get all users.yml (GET /users test)
- Add Posts/Get post by ID.yml (GET /posts/1 test)
- Add Posts/Create new post.yml (POST /posts test)
- Update README.md with JsonPlaceholder reference

Tests use public JSONPlaceholder API - no local backend required.
Works in CI/CD pipeline automatically.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
kankys committed 2026-09-15 21:48:14 +02:00
1 parent 7ec092a134
commit 72370c2f2f
7 files changed
+158 -1

No files matched your search

+1 -1
View File
@@ -182,7 +182,7 @@ Soubor: [`.github/workflows/api-tests.yml`](./.github/workflows/api-tests.yml)
---
## 📞 Kontakt & Podpora
## 📞 Podpora
- **Issues**: [GitHub Issues](https://github.com/kankys/api_test/issues)
- **Diskuse**: Použijte GitHub Discussions
@@ -0,0 +1,44 @@
info:
name: Create new post
type: http
seq: 2
http:
method: POST
url: https://jsonplaceholder.typicode.com/posts
auth: inherit
headers:
- name: Content-Type
value: application/json
body:
raw: |-
{
"title": "foo",
"body": "bar",
"userId": 1
}
runtime:
scripts:
- type: tests
code: |-
const status = res.getStatus();
const responseBody = res.getBody();
test("Status code is 201", function() {
expect(status).to.equal(201);
});
test("Response has id", function() {
expect(responseBody).to.have.property('id');
});
test("Response id is a number", function() {
expect(responseBody.id).to.be.a('number');
});
settings:
encodeUrl: true
timeout: 10000
followRedirects: true
maxRedirects: 5
@@ -0,0 +1,40 @@
info:
name: Get post by ID
type: http
seq: 1
http:
method: GET
url: https://jsonplaceholder.typicode.com/posts/1
auth: inherit
runtime:
scripts:
- type: tests
code: |-
const status = res.getStatus();
const body = res.getBody();
test("Status code is 200", function() {
expect(status).to.equal(200);
});
test("Response has id 1", function() {
expect(body.id).to.equal(1);
});
test("Response has title and body", function() {
expect(body).to.have.property('title');
expect(body).to.have.property('body');
});
test("Title is not empty", function() {
expect(body.title).to.not.be.empty;
});
settings:
encodeUrl: true
timeout: 10000
followRedirects: true
maxRedirects: 5
forwardAuthorizationHeader: true
+7
View File
@@ -0,0 +1,7 @@
info:
name: Posts
type: folder
seq: 2
request:
auth: inherit
@@ -0,0 +1,43 @@
info:
name: Get all users
type: http
seq: 1
http:
method: GET
url: https://jsonplaceholder.typicode.com/users
auth: inherit
runtime:
scripts:
- type: tests
code: |-
const status = res.getStatus();
const body = res.getBody();
test("Status code is 200", function() {
expect(status).to.equal(200);
});
test("Response is an array", function() {
expect(body).to.be.an('array');
});
test("Array has 10 users", function() {
expect(body).to.have.length(10);
});
test("Each user has id and name", function() {
body.forEach(user => {
expect(user).to.have.property('id');
expect(user).to.have.property('name');
expect(user).to.have.property('email');
});
});
settings:
encodeUrl: true
timeout: 10000
followRedirects: true
maxRedirects: 5
forwardAuthorizationHeader: true
+7
View File
@@ -0,0 +1,7 @@
info:
name: Users
type: folder
seq: 1
request:
auth: inherit
@@ -0,0 +1,16 @@
opencollection: 1.0.0
info:
name: JsonPlaceholder
type: collection
request:
auth: inherit
bundled: false
extensions:
bruno:
ignore:
- node_modules
- .git