{"id":15022430,"url":"https://github.com/cornelius/httpotemkin","last_synced_at":"2026-01-20T02:47:55.373Z","repository":{"id":50011844,"uuid":"47524221","full_name":"cornelius/httpotemkin","owner":"cornelius","description":"Mock HTTP services for system tests","archived":false,"fork":false,"pushed_at":"2021-06-06T06:03:17.000Z","size":1011,"stargazers_count":0,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-11-20T14:13:54.217Z","etag":null,"topics":["acceptance-testing","http","integration-testing","mock","rspec"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cornelius.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-07T02:24:26.000Z","updated_at":"2021-06-06T06:03:20.000Z","dependencies_parsed_at":"2022-09-10T03:30:53.050Z","dependency_job_id":null,"html_url":"https://github.com/cornelius/httpotemkin","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/cornelius/httpotemkin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornelius%2Fhttpotemkin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornelius%2Fhttpotemkin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornelius%2Fhttpotemkin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornelius%2Fhttpotemkin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cornelius","download_url":"https://codeload.github.com/cornelius/httpotemkin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cornelius%2Fhttpotemkin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28594958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T02:08:49.799Z","status":"ssl_error","status_checked_at":"2026-01-20T02:08:44.148Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acceptance-testing","http","integration-testing","mock","rspec"],"created_at":"2024-09-24T19:57:56.459Z","updated_at":"2026-01-20T02:47:55.359Z","avatar_url":"https://github.com/cornelius.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Httpotemkin provides tools to mock HTTP servers for system-level tests. It uses\ndocker containers to provide mocks of HTTP APIs and Ruby classes which can\nbe used in tests to execute applications in the environment of the mocked APIs.\nThis allows to test applications which talk to HTTP APIs without having to\nchange them in any way for the tests, so that very high-level system tests can\nbe done in a controlled environment suitable for test driven development.\n\nThe tests in `spec/system` provide examples of how tests using httpotemkin can\nbe written.\n\n## Debugging\n\nWhen debugging tests (which actually means reverse engineering the protocol of\nthe service and implementing the required bits) it is convenient to get in a\nmode of interactive debugging, where there are containers for the server and\nthe client under control of a shell. This allows to manually trigger calls from\nthe client and see the resulting requests in the log of the server. By adapting\nthe server calls one at a time, it's easily possible to provide the minimal\nmocking to make the tests run.\n\nOne way to enter the state of debugging a specific test is to add debug code to\nthe RSpec test, e.g. add a `binding.pry` call just before the client test call\nis executed and passing `r.pry` to the `rspec` command. Then you end up in a\nstate where all containers are started, test data is injected, and you can debug\nthe calls which are supposed to take place.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornelius%2Fhttpotemkin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcornelius%2Fhttpotemkin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcornelius%2Fhttpotemkin/lists"}