1{ lib, ... }:
2
3{
4 name = "go-httpbin";
5 meta.maintainers = with lib.maintainers; [ defelo ];
6
7 nodes.machine = {
8 services.go-httpbin = {
9 enable = true;
10 settings.PORT = 8000;
11 };
12 };
13
14 interactive.nodes.machine = {
15 services.go-httpbin.settings.HOST = "0.0.0.0";
16 networking.firewall.allowedTCPPorts = [ 8000 ];
17 virtualisation.forwardPorts = [
18 {
19 from = "host";
20 host.port = 8000;
21 guest.port = 8000;
22 }
23 ];
24 };
25
26 testScript = ''
27 import json
28
29 machine.wait_for_unit("go-httpbin.service")
30 machine.wait_for_open_port(8000)
31
32 resp = json.loads(machine.succeed("curl localhost:8000/get?foo=bar"))
33 assert resp["args"]["foo"] == ["bar"]
34 assert resp["method"] == "GET"
35 assert resp["origin"] == "127.0.0.1"
36 assert resp["url"] == "http://localhost:8000/get?foo=bar"
37 '';
38}