1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2026-10-29 05:32:31 +00:00
James Hillyerd 9aaad6b950 test(rest): add black-box WebSocket monitor tests (#621)
Cover the REST WebSocket monitor endpoints (v1 + v2), previously at 0%
for all 18 functions in socketv1_controller.go and socketv2_controller.go;
pkg/rest coverage goes from 20.9% to 73.2%.

The harness dials a real gorilla/websocket client into an httptest server
wired to a running msghub.Hub, and relies on the hub's history replay for
deterministic ordering: dispatching before dialing seeds the replay, and
events are relayed in dispatch order, so receiving event N next proves
filtered events were skipped rather than delayed.

Covered for both API versions:

- monitor-all and per-mailbox endpoints, including history replay and live
  delivery, and mailbox filtering of both message-stored and (v2)
  message-deleted events
- address-form mailbox names via Manager.MailboxForAddress (user%40example.com)
- invalid mailbox names rejected with 500 before the upgrade, and plain GET
  requests failing the handshake with 400
- client data messages discarded by the read pump
- clean client shutdown: listener deregistration, empty close frame from
  the writer racing the read pump's close-code echo, and the
  WebSocketConnectsCurrent expvar gauge increment/decrement

Tests only; no production changes.  Notes for follow-up commits:

- v1 monitors ignore deletions while v2 reports them (pinned as current
  behavior in TestMonitorMailboxMessagesV1)
- httptest.Server.Close does not wait for hijacked connections, so
  dialMonitor's cleanup awaits the handler goroutine via the connections
  gauge before the hub is stopped; the read/write pumps calling
  msgListener.Close concurrently can still double-close its channel
  (check-then-act race in Close's select) and deserves a fix
- deadline-set error paths, the 54s ping/pong cycle, and write-failure
  paths remain uncovered, consistent with the POP3 send-error paths
2026-09-17 18:23:26 -07:00
2025-07-27 11:25:03 -07:00
2026-09-15 15:52:05 -07:00
2023-02-08 10:32:19 -08:00
2023-09-05 14:28:26 -07:00
2025-12-06 10:18:15 -08:00
2025-11-22 10:41:48 -08:00
2026-09-07 15:03:28 -07:00
2026-09-07 15:03:28 -07:00
2025-02-17 09:13:57 -08:00

Build Status Docker Image

Inbucket

Inbucket is an email testing service; it will accept messages for any email address and make them available via web, REST and POP3 interfaces. Once compiled, Inbucket does not have any external dependencies - HTTP, SMTP, POP3 and storage are all built in.

A Go client for the REST API is available in github.com/inbucket/inbucket/pkg/rest/client - Go API docs

Read more at the Inbucket Website

Screenshot

Development Status

Inbucket is currently production quality: it is being used for real work.

Please see the Change Log and Issues List for more details. If you'd like to contribute code to the project check out CONTRIBUTING.md.

Docker

Inbucket has automated Docker Image builds via Docker Hub. The latest tag tracks our tagged releases, and edge tracks our potentially unstable main branch.

Start the docker image by running:

docker run -d --name inbucket -p 9000:9000 -p 2500:2500 -p 1100:1100 inbucket/inbucket

Then point your browser to localhost:9000

Building from Source

You will need functioning Go and Node.js installations for this to work.

git clone https://github.com/inbucket/inbucket.git
cd inbucket/ui
yarn install
yarn build
cd ..
go build ./cmd/inbucket

For more information on building and development flows, check out the Development Quickstart page of our wiki.

Configure and Launch

Inbucket reads its configuration from environment variables, but comes with reasonable defaults built-in. It should work on most Unix and OS X machines as is. Launch the daemon:

./inbucket

By default the SMTP server will be listening on localhost port 2500 and the web interface will be available at localhost:9000.

See doc/config.md for more information on configuring Inbucket, but you will likely find the Configurator tool the easiest way to generate a configuration.

About

Inbucket is written in Go and Elm.

Inbucket is open source software released under the MIT License. The latest version can be found at https://github.com/inbucket/inbucket

S
Description
No description provided
Readme MIT 12 MiB
Languages
Go 78.8%
Elm 15.9%
CSS 2.4%
Shell 1.2%
JavaScript 0.7%
Other 1%