Commit 530a2fdc11
Verified · cmc ci/build: success ci/test: success
Layout: unified · split
internal/hookd/socket_test.go +5 −2
| @@ -155,8 +155,11 @@ func TestPeerRefusalIsAudited(t *testing.T) { | |||
| 155 | peerCheck = func(net.Conn) error { return errors.New("peer uid not permitted") } | 155 | peerCheck = func(net.Conn) error { return errors.New("peer uid not permitted") } |
| 156 | t.Cleanup(func() { peerCheck = old }) | 156 | t.Cleanup(func() { peerCheck = old }) |
| 157 | sock, st, repoID, uid := serveSocket(t) | 157 | sock, st, repoID, uid := serveSocket(t) |
| 158 | if resp, err := Ask(sock, Request{Hook: "pre-receive", RepoID: repoID, UserID: uid}, nil); err != nil || resp.Allow { | 158 | // The server answers and closes without reading the request, so the |
| 159 | t.Fatalf("refused peer: %+v, %v", resp, err) | 159 | // client may see the refusal or a broken pipe; either way it is not |
| 160 | // allowed, and the row is written before the connection closes. | ||
| 161 | if resp, err := Ask(sock, Request{Hook: "pre-receive", RepoID: repoID, UserID: uid}, nil); err == nil && resp.Allow { | ||
| 162 | t.Fatalf("refused peer was allowed: %+v", resp) | ||
| 160 | } | 163 | } |
| 161 | rows := refusedRows(t, st, "refused hook") | 164 | rows := refusedRows(t, st, "refused hook") |
| 162 | if len(rows) != 1 || rows[0].Actor != "" || !strings.Contains(rows[0].Data, "peer uid not permitted") { | 165 | if len(rows) != 1 || rows[0].Actor != "" || !strings.Contains(rows[0].Data, "peer uid not permitted") { |