Prism End-to-End Contract Testing
āļāļāđāļĨāđāļē middleware āļāļąāļ§āļāļķāļāļāļĩāđāļāļ°āļĄāļēāļāđāļ§āļĒāđāļĢāļ·āđāļāļ quality āđāļŦāđ product āđāļĢāļēāļĢāļąāļāļĐāļē quality āđāļŦāđāļāļĒāļđāđāđāļāđāļāļĒāđāļēāļāļŠāļĄāđāļģāđāļŠāļĄāļ āđāļĄāđāļāļĨāļēāļāļāļķāđāļ production āđāļāļāļĒāđāļēāļāļāļĨāļēāļāđ
Prism āļāļ·āļ

Prism āđāļāđāļāļŦāļāļķāđāļāđāļ Product āļāļāļ Stoplight āļāļĩāđāļāļąāļāļāļē collaborative platform āļāļ°āļāļĢāļąāļ Product āļāļāļāđāļāđāļēāļāđāļĄāļĩāļŦāļĨāļēāļĒāļāļąāļ§ āļĨāļāļāđāļāđāļēāđāļāļāļđāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļāđāļāļēāļāđāļ§āđāļāļŦāļĨāļąāļāđāļāđāļēāđāļāđāđāļĨāļĒ https://meta.stoplight.io/
āļāđāļēāđāļāđāļāđāļēāđāļāļĐāļāļēāļāđāļ§āļĒāļāļ°āļāđāļ§āļĒāļāļēāļĒāļāļāļāļĄāļēāļāļāļ§āđāļēāļāļĩāđ ðĪ
āļāļēāļĄāļāļĩāđāđāļāđāļēāđāļāļĐāļāļēāļāļĢāļąāļ Prism āļŠāļēāļĄāļēāļĢāļāļāļģ API Mock Server āđāļĨāļ° Contract Testing āđāļāđ āđāļāđāđāļāļāļāļāļ§āļēāļĄāļāļĩāđāļāļ°āđāļĨāđāļēāļāļķāļāđāļāđ Contract Test āļāļ°āļāļĢāļąāļ āđāļ§āļĄāļĩāđāļāļāļēāļŠāļāļ°āļĄāļēāđāļĨāđāļēāļāļēāļĢāļāļģ API Mock āđāļŦāđāļāđāļēāļāļāļąāļāļāļĢāļąāļ
Contract Testing āļāļ·āļāļāļ°āđāļĢāļŠāļīāđāļāļāļĩāđāļāđāļāļāļĄāļĩ
āļāđāļēāđāļāđāļāđāļēāļ "Contract Testing āļāļ·āļāļāļ°āđāļĢāđāļĨāđāļ§" āļāļ°āđāļŦāđāļāļ§āđāļēāļĄāļąāļāđāļāđāļāļēāļāļāļđāđāļāļąāļ API Spec āđāļāļ·āđāļāđāļāļēāđāļ§āļāļĢāļ§āļāļŠāļāļ Response āļāļāļ API āļāļ°āļāļĢāļąāļ
āļāļąāļāļāļąāđāļāđāļāđāļē Prism āđāļāļĩāđāļĒāļāđāļāđāļāļāļāļēāļĢāđāļāđāļāļāļąāļ āđāļāļĒāļāļĩāđāđāļāđāļē Prism āļāđ support API Spec āļāļāļ OpenAPI āļāļĩāđāđāļāđāļ Standard āļāļĩāđāđāļāļĢāđ āļāđāđāļāđāļāļąāļ āļāļąāļāļāļąāđāļāļŠāļīāđāļāļāļĩāđāļāļēāļāđāļĄāđāđāļāđāļāļ·āļāļāđāļāļāļĄāļĩ file .yaml āļŦāļĢāļ·āļ .json āļāļĩāđāđāļāđāļ OpenAPI āļāđāļāļāļāļ°āļāļĢāļąāļ
OpenAPI āļāļ·āđāļāđāļāļīāļĄāļāļ·āļ Swagger Specification āļāļ°āļāļĢāļąāļ āļāđāļēāļāļ°āļāļļāđāļāļāļąāļāļĄāļēāļāļāļķāđāļ
Prism support OpenAPI v2 āļāļąāļ v3 āļāļ°āļāļĢāļąāļ
File *.yaml āļŦāļĢāļ·āļ *.json āļāļĩāđāđāļāđāļ OpenAPI
node.js āđāļĨāļ° npm
Web API āļāļĩāđ Response āđāļāđāļāļēāļĄ spec āļāđāļ 1
āļŦāļĨāļąāļāļāļēāļāļāļīāļāļāļąāđāļāļāđāļ 2 āđāļĨāđāļ§āļāļīāļāļāļąāđāļ prism-cli
āļāļģ spec āļāđāļēāļĒāđ āđāļ§ test āļŠāļąāļāļāļąāļ§āđāļāļĩāļĒāļ§āļāļ
save file āļāļ·āđāļ account.yaml
āđāļŦāļāđ āļĨāļ node āđāļĨāđāļ§āļāđāđāļāđ node.js + express āđāļĨāļĒāđāļĨāđāļ§āļāļąāļ
āļāļēāļĄāļāđāļ§āļĒ code āļāļģ Web API āļŠāļąāđāļāđ āļŠāļąāļ 1 API āđāļāđāļāđāļāļāđāļŦāđāļĄāļąāļāđāļŦāļĄāļ·āļāļ spec āļāļĩāđāļāļģāļāļĩāđāļāđāļ 1 āļāđāļ§āļĒāļāļ°
save file āļāļ·āđāļ prism-test.js
āļāļēāļ code āļāļĩāđāļāļĄāļāļąāđāļāđāļāđāļŦāđāļĄāļąāļ response āļāļīāļāļāļ°āļāļĢāļąāļ āļāļ°āđāļāđāđāļŦāđāļāļ āļēāļāļāļāļ test āļāļąāļāđāļāļāļ°
āļŦāļĨāļąāļāļāļēāļāļāļīāļāļāļąāđāļāđāļŠāļĢāđāļāļŦāļĄāļāđāļĨāđāļ§āđāļāļīāļ terminal āđāļĨāđāļ§āļĨāļāļāļāļīāļĄāļāđ prism --version āļāļđāļāđāļāļāđāļŠāļāļ version āļāļāļāļĄāļēāļāļĢāļąāļ
āđāļĢāļīāđāļĄāļāļąāļāđāļĨāļĒāļāļĩāļāļ§āđāļē
āđāļāļīāļ Terminal āļāļķāđāļāļĄāļēāļāļĢāļąāļāđāļĨāđāļ§ start Web API āļāļĩāđāđāļĢāļēāļāļģāđāļ§āļāđāļāļāđāļĨāļĒ
āļāļēāļĄāļāđāļ§āļĒ start āđāļāđāļē prism āđāļŦāđāļĄāļēāļāļģāļāļēāļāđāļāđāļ proxy āđāļŦāđāđāļĢāļē format āļāļāļ prism cil āđāļāđāļāđāļāļāļāļĩāđāļāļĢāļąāļ
āļāļĢāļ --errors āļāļĩāđāļŠāļģāļāļąāļāļāļ°āļāļĢāļąāļ
āđāļĢāļēāļāđāđāļāļāļāļĩāđāļāđāļ§āļĒ file āļāļāļāđāļĢāļē āļāļąāļ Web API āļāļāļāđāļĢāļēāļāļĩāđāļāļģāđāļ§āđ
āļŦāļĨāļąāļāļāļēāļāļāļ enter āđāļĨāđāļ§āđāļāđāļē prism āļāļ°āļāļģāļĨāļāļāļāļąāļ§āđāļāļāđāļāđāļ proxy server āļāļķāđāļāļĄāļēāđāļŦāđāļāļĢāļąāļ defalt āļāļ·āļ 127.0.0.1:4010 āđāļāļ·āđāļāđāļŦāđāđāļĢāļēāđāļĢāļĩāļĒāļāđāļāđāļāļēāļ

āđāļāđāļēāļāļĩāđāļāđāļāļĢāđāļāļĄāđāļŦāđāļāļāļŠāļāļāđāļĨāđāļ§āļāļĢāļąāļ āļāđāļāđāļāļāļ·āļāđāļāļīāļ Program āļāļ°āđāļĢāļāđāđāļāđāļāļĩāđāļāļāļąāļāļāļĢāļąāļāđāļāļēāđāļ§āļāļāļŠāļāļāđāļĢāļĩāļĒāļ API āļāļĄāđāļāđāļāļąāļ§āļĒāļāļāļāļīāļĒāļĄ Postman āļāļąāđāļāđāļāļāļāļĢāļąāļ
āđāļ§āļĨāļēāđāļĢāļĩāļĒāļāļāļĩāđ Postman āļāļāļāļīāđāļĢāļēāļāļ°āđāļĢāļĩāļĒāļāđāļāļāļĩāđ Web API Server āļāļāļāđāļĢāļēāļāļĢāļīāļāđ āļāļąāļāļāļĩāđāļāđāđāļŦāđāđāļāļĨāļĩāđāļĒāļāđāļāđāļāđāļĢāļĩāļĒāļāļāđāļēāļ prism proxy āđāļāļāļāļĢāļąāļ āļŦāļēāļāđāļĢāļĩāļĒāļāđāļĨāđāļ§āļāļļāļāļāļĒāđāļēāļ Respones āļāļēāļĄ Spec āļŦāļĄāļāđāļĢāļēāļāļ°āđāļāđ Response āļāļĩāđāļāļđāļāļāđāļāļāļĄāļēāļāļēāļĄāļāļĢāļīāļāļĄāļēāđāļĨāļĒāļāļĢāļąāļ āđāļāđāđāļ case āļāļĩāđāđāļĄāđāļāļĢāļāļāļēāļĄ Spec āļāđāļāļ°āđāļāđ Error āļĄāļēāđāļāļĒ Error āļāļĩāđāđāļāđāļĄāļēāđāļāļĩāđāļĒ āļĄāļąāļāļāļ°āļāļāļāļāđāļ§āļĒāļāļ°āļ§āđāļēāđāļāļĩāļĒāļāļāļąāļ Spec āđāļĨāđāļ§āļāļīāļāļāļĢāļāđāļŦāļ āđāļāđāļē prism āđāļāļĩāđāļĒāļĄāļąāļāļāļ° validate āđāļŦāđāļāļąāđāļāļāļāļ request āđāļĨāļ° response āđāļĨāļĒ
āļāļĢāļāļĩ request āđāļāđāļāļāļāļīāļāđ
āļŠāđāļ query string type=deleted āļāļķāđāļ spec āļāļāļāđāļ§āļ§āđāļēāļāļ°āļĄāļĩāđāļāđ active āđāļĨāļ° inactive

āļāļĢāļāļĩ request āļāļđāļāļāđāļāļāļŦāļĄāļāđāļāđ response āļāļĩāđāđāļāđāļāļĨāļąāļāļĄāļēāđāļĄāđāļāļĢāļāļāļēāļĄ spec
āļāđāļēāļāļđāđāļ cod āļāļĄāļāļąāđāļāđāļāđāļŦāđ response item āļāļĩāđ 2 āļĄāļĩ account_type=deleted
spec āļāļāļ account_type āļāļ°āļĄāļĩāđāļāđ active āđāļĨāļ° inactive

āļŦāļĨāļąāļāļāļēāļ Request āļāđāļēāļ Postman āđāļāđāļĨāđāļ§āļāļ°āđāļŦāđāļ Result āļāđāļēāļ Terminal āļāđāļ§āļĒāđāļāđāļāļāļąāļāļāļĢāļąāļ

āļāļ°āđāļŦāđāļāļ§āđāļēāļāđāļēāđāļāđāļāđāļāļāļāļĩāđāļāļēāļāļāļ°āđāļāļīāļ blocker āđāļāđāđāļāļ·āđāļāļāļāļēāļāļāļāđāļāļāļ§āđāļē API āļāļģāļāļēāļāđāļĄāđāļāļĢāļāļāļēāļĄ spec āļĄāļąāļāļāđāļāļ°āđāļĄāđ response āđāļāļāļēāļĄāļāļĩāđ API āļŠāđāļāļĄāļēāļāļĢāļīāļāđ āļāļģāđāļŦāđāđāļĢāļēāļāļēāļāļāļ°āđāļĄāđāđāļŦāđāļāļāļĨāļāļĢāļ°āļāļāļāļĢāļīāļāđ āļāļāļ consumer āļāļĩāđ request āļĄāļē āļāļąāļāļāļąāđāļāđāļĢāļēāļāļēāļāļāļ°āļāđāļāļāļāļēāļĢāđāļŦāđ response āļāļĨāļąāļāđāļāļŦāļē consumer āđāļĨāļĒāļāļĢāļīāļāđ āđāļāļ·āđāļāđāļŦāđāļĢāļđāđāļāļĨāļāļĢāļ°āļāļāļāļĩāđāđāļāļīāļāļāļķāđāļāļŦāļĢāļ·āļāļāđāļē consumer āļĄāļĩāļāļģ unit test āđāļ§āļāļĒāļđāđāđāļĨāđāļ§āđāļĢāļēāļāđāļāļ°āđāļāđāđāļŦāđāļāļāđāļ§āļĒāļ§āđāļēāđāļāļīāļāļāļ°āđāļĢāļāļķāđāļāļāļąāļ consumer āļāļēāļāđāļ case āļāļĩāđāļāļīāļāļāļĨāļēāļ
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļģāđāļāđāļāđāļēāļĒāđ āđāļĨāļĒāļāļāļ run prism proxy āđāļĢāļēāđāļāđāđāļĄāđāļāđāļāļāļŠāđāļ --errors āđāļāđāļāđāļāļąāđāļāļāļĢāļąāļ āļĨāļāļāļāļąāļāđāļĨāļĒ
āļāļēāļāļāļąāđāļāđāļĢāļēāļĨāļāļāđāļāļē Postman āđāļĢāļĩāļĒāļāļāļđāļāļĩāļāļāļĩāļāļĢāļąāļ

āļāļ°āđāļŦāđāļāļ§āđāļēāđāļĢāļēāđāļāđ response āļĄāļēāļāļēāļ API āļāļēāļĄāļāļĢāļīāļāļāļĨāļąāļāļĄāļēāđāļĨāļĒāļāļ·āļāļāļĩāđāļĄāļĩ account_type=deleted āļāļĩāđāđāļĄāđāļāļĢāļāļāļēāļĄ spec āđāļĨāđāļ§āđāļĢāļēāļĨāļāļāđāļāļāļđāļāļĩāđ terminal āļāļĢāļąāļ

āļāļ°āđāļŦāđāļāļ§āđāļēāđāļĢāļēāļāļ°āđāļŦāđāļ error description āđāļŠāļāļāļāļ terminal āđāļāļāļāļĢāļąāļ
āļāļąāļāļāļĩāđāđāļāđāļāļāļąāļ§āļāļĒāđāļēāļāļāļĩāđāļāļģāđāļ§āđāļāđ 1 API āļāļĢāļąāļ āļāļēāļĄāļāļ§āļēāļĄāđāļāđāļāļāļĢāļīāļāđāļĢāļēāļāđāļŠāļēāļĄāļēāļĢāļāđāļāđāļ§āļīāļāļĩāļāļēāļĢāđāļāļĩāļĒāļ§āļāļąāļāđāļāđāļāļąāļāļāļļāļ API āļāļĩāđāđāļĢāļēāļĄāļĩ āļāļļāļāļāļĢāļąāđāļāļāļĩāđāļĄāļĩāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļŦāļēāļ Frontend āđāļĄāđāđāļāđāļāļģāļāļ°āđāļĢāđāļāđ Backend āļĄāļĩāļāļēāļĢāđāļāļīāđāļĄ Featrue āđāļĢāļēāļāđāļŠāļēāļĄāļēāļĢāļ run contract test āđāļāļ·āđāļāļāļđāļāđāļāļāļ§āđāļēāļĒāļąāļāļāļĢāļāļāļēāļĄ Spec āļāļĩāđāļāļļāļĒāļāļąāļāđāļ§āļāļĒāļđāđāļŦāļĢāļ·āļāđāļĄ āļāļģāđāļŦāđāļāļēāļāļāļĢāļąāđāļāļāļēāļāļāļ°āđāļĄāđāļāļģāđāļāđāļāļāđāļāļ E2E test āđāļĨāļĒāļāđāđāļāđ
āļāļāđāļĨāđāļ§āļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļāđāļē Prism āļāļāļāļāļļāļāļāļĢāļąāļ

Reference
Feature āđāļāđāļĄāđ āļāļāļāđāļāđāļē "Prism" āļāļ°āļāļĢāļąāļ https://meta.stoplight.io/docs/prism/README.md
Featrue āļāļ·āđāļāđ āļāļāļ Prism āđāļāļāļēāļĢāļāļģ Contract Test https://meta.stoplight.io/docs/prism/docs/guides/03-validation-proxy.md
Last updated