Замокать push-вебхук GitHub
GET-мок в духе push-события GitHub: один коммит в refs/heads/main.
Отдаёт готовое событие — скормите его прямо своему обработчику.
Тело ответа
{
"ref": "refs/heads/main",
"before": "a10867b14bb761a232cd80139fbd4c0d33264240",
"after": "b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9",
"repository": {
"full_name": "octocat/quickmock-demo"
},
"pusher": {
"name": "octocat"
},
"commits": [
{
"id": "b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9",
"message": "fix: handle empty payload",
"timestamp": "2024-05-01T12:00:00Z"
}
]
}
Поля, на которые стоит обратить внимание
| Поле | Что означает |
|---|---|
| ref | Ветка, в которую был push, например refs/heads/main. |
| after | SHA коммита после push — на него ссылаются в дальнейших вызовах API GitHub. |
| repository.full_name | Имя репозитория в формате owner/repo; поправьте под свой тестовый репозиторий. |
| pusher.name | Логин пользователя GitHub, который сделал push. |
| commits | Коммиты, входящие в этот push — здесь урезано до одного. |
Создать мок
curl -X POST https://quickmock.dev/api/mocks \
-H 'Content-Type: application/json' \
-d '{
"method": "GET",
"response_status": 200,
"content_type": "application/json",
"response_body": "{\"ref\":\"refs/heads/main\",\"before\":\"a10867b14bb761a232cd80139fbd4c0d33264240\",\"after\":\"b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9\",\"repository\":{\"full_name\":\"octocat/quickmock-demo\"},\"pusher\":{\"name\":\"octocat\"},\"commits\":[{\"id\":\"b7e1a2c3d4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9\",\"message\":\"fix: handle empty payload\",\"timestamp\":\"2024-05-01T12:00:00Z\"}]}"
}'
Вызвать
curl https://quickmock.dev/m/<slug>
Что вы получите
GET /m/<slug> -> 200 a GitHub-style push event
one commit on refs/heads/main
Чем это отличается от настоящего
Это один статичный коммит вместо полного набора полей настоящего push-события — без заголовка X-Hub-Signature-256, без sender и head_commit, без ссылки compare.
Готовы попробовать?
Хорошо сочетается с гайдом: Протестировать приём вебхуков