88 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import http from "k6/http";
 | |
| import {check} from "k6";
 | |
| import names from "./names.js";
 | |
| 
 | |
| const baseUri = `http://petclinic:9966/petclinic/api`;
 | |
| 
 | |
| export default function() {
 | |
|     const specialtiesUrl = `${baseUri}/specialties`;
 | |
|     const specialtiesResponse = http.get(specialtiesUrl);
 | |
|     const specialties = JSON.parse(specialtiesResponse.body);
 | |
| 
 | |
|     // Add a new vet to the list
 | |
|     const newVet = names.randomVet(specialties);
 | |
|     const response = http.post(`${baseUri}/vets`, JSON.stringify(newVet),
 | |
|             { headers: { 'Content-Type': 'application/json' } });
 | |
|     // we don't guard against dupes, so this could fail on occasion
 | |
|     check(response, { "create vet status 201": (r) => r.status === 201 });
 | |
| 
 | |
|     // make sure we can fetch that vet back out
 | |
|     const vetId = JSON.parse(response.body).id;
 | |
|     const vetUrl = `${baseUri}/vets/${vetId}`
 | |
|     const vetResponse = http.get(vetUrl);
 | |
|     check(vetResponse, { "fetch vet status 200": r => r.status === 200 });
 | |
| 
 | |
|     // add a new owner
 | |
|     const newOwner = names.randomOwner();
 | |
|     const newOwnerResponse = http.post(`${baseUri}/owners`, JSON.stringify(newOwner),
 | |
|           { headers: { 'Content-Type': 'application/json' } });
 | |
|     check(newOwnerResponse, { "new owner status 201": r => r.status === 201});
 | |
| 
 | |
|     // make sure we can fetch that owner back out
 | |
|     const ownerId = JSON.parse(newOwnerResponse.body).id;
 | |
|     const ownerResponse = http.get(`${baseUri}/owners/${ownerId}`);
 | |
|     check(ownerResponse, { "fetch new owner status 200": r => r.status === 200});
 | |
|     const owner = JSON.parse(ownerResponse.body);
 | |
| 
 | |
|     // get the list of all pet types
 | |
|     const petTypes = JSON.parse(http.get(`${baseUri}/pettypes`).body);
 | |
|     const owners = JSON.parse(http.get(`${baseUri}/owners`).body);
 | |
| 
 | |
|     // create a 3 new random pets
 | |
|     const pet1 = names.randomPet(petTypes, owner);
 | |
|     const pet2 = names.randomPet(petTypes, owner);
 | |
|     const pet3 = names.randomPet(petTypes, owner);
 | |
| 
 | |
|     const petsUrl = `${baseUri}/pets`;
 | |
|     const newPetResponses = http.batch([
 | |
|         ["POST", petsUrl, JSON.stringify(pet1), { headers: { 'Content-Type': 'application/json' } } ],
 | |
|         ["POST", petsUrl, JSON.stringify(pet2), { headers: { 'Content-Type': 'application/json' } } ],
 | |
|         ["POST", petsUrl, JSON.stringify(pet3), { headers: { 'Content-Type': 'application/json' } } ],
 | |
|     ]);
 | |
|     check(newPetResponses[0], { "pet status 201": r => r.status === 201});
 | |
|     check(newPetResponses[1], { "pet status 201": r => r.status === 201});
 | |
|     check(newPetResponses[2], { "pet status 201": r => r.status === 201});
 | |
| 
 | |
|     const responses = http.batch([
 | |
|         ["GET", `${baseUri}/pets/${JSON.parse(newPetResponses[0].body).id}`],
 | |
|         ["GET", `${baseUri}/pets/${JSON.parse(newPetResponses[1].body).id}`],
 | |
|         ["GET", `${baseUri}/pets/${JSON.parse(newPetResponses[2].body).id}`]
 | |
|     ]);
 | |
|     check(responses[0], { "pet exists 200": r => r.status === 200});
 | |
|     check(responses[1], { "pet exists 200": r => r.status === 200});
 | |
|     check(responses[2], { "pet exists 200": r => r.status === 200});
 | |
| 
 | |
|     // Clean up after ourselves.
 | |
|     // Delete pets
 | |
|     const petDeletes = http.batch([
 | |
|       ["DELETE", `${baseUri}/pets/${JSON.parse(newPetResponses[0].body).id}`],
 | |
|       ["DELETE", `${baseUri}/pets/${JSON.parse(newPetResponses[1].body).id}`],
 | |
|       ["DELETE", `${baseUri}/pets/${JSON.parse(newPetResponses[2].body).id}`]
 | |
|     ]);
 | |
| 
 | |
|     check(petDeletes[0], { "pet deleted 204": r => r.status === 204});
 | |
|     check(petDeletes[1], { "pet deleted 204": r => r.status === 204});
 | |
|     check(petDeletes[2], { "pet deleted 204": r => r.status === 204});
 | |
| 
 | |
|     // Delete owner
 | |
|     const delOwner = http.del(`${baseUri}/owners/${ownerId}`);
 | |
|     check(delOwner, { "owner deleted 204": r => r.status === 204});
 | |
| 
 | |
|     // Delete vet
 | |
|     const delVet = http.del(`${baseUri}/vets/${vetId}`);
 | |
|     check(delVet, { "owner deleted 204": r => r.status === 204});
 | |
| 
 | |
|     //TODO: Set up a visit or two
 | |
|     //TODO: Fetch out the owner again because their model has been updated.
 | |
| 
 | |
| }; |