Skip to content
quarry Artifact [1a58115108]
Login

Artifact [1a58115108]

Artifact 1a581151083f36cd6ea2a55439adf54a365f896d2e70e793f3715ff28dad05f6:


package oltp

import (
	"path/filepath"
	"testing"
)

// The secret is what notify showed once; the forge keeps exactly that
// and answers empty until it has one.
func TestNotifyHookSecretIsWhatNotifyGave(t *testing.T) {
	d, err := Open(filepath.Join(t.TempDir(), "oltp.db"))
	if err != nil {
		t.Fatal(err)
	}
	defer d.Close()
	if s, err := d.NotifyHookSecret(); err != nil || s != "" {
		t.Fatalf("FAIL: a fresh forge answered %q, %v", s, err)
	}
	if err := d.SetNotifyHook("ep_1", "https://forge/api/v1/notify/events", "whsec_a"); err != nil {
		t.Fatal(err)
	}
	if s, _ := d.NotifyHookSecret(); s != "whsec_a" {
		t.Fatalf("FAIL: stored secret came back as %q", s)
	}
	// A rotation replaces it outright: notify keeps no overlap window.
	if err := d.SetNotifyHook("ep_1", "https://forge/api/v1/notify/events", "whsec_b"); err != nil {
		t.Fatal(err)
	}
	if s, _ := d.NotifyHookSecret(); s != "whsec_b" {
		t.Fatalf("FAIL: rotated secret came back as %q", s)
	}
	t.Log("ok: the forge keeps the one secret notify showed it")
}

// A redelivered mail is recognised by its Message-ID.
func TestInboundReplyDedup(t *testing.T) {
	d, err := Open(filepath.Join(t.TempDir(), "oltp.db"))
	if err != nil {
		t.Fatal(err)
	}
	defer d.Close()
	if _, seen, err := d.InboundReplySeen("<m1@mail>"); err != nil || seen {
		t.Fatalf("FAIL: unseen mail reported seen (%v)", err)
	}
	if err := d.RecordInboundReply("<m1@mail>", "forum-reply:abc:lou", "lou", "forum:abc"); err != nil {
		t.Fatal(err)
	}
	outcome, seen, err := d.InboundReplySeen("<m1@mail>")
	if err != nil || !seen || outcome != "forum:abc" {
		t.Fatalf("FAIL: seen=%v outcome=%q err=%v", seen, outcome, err)
	}
	t.Log("ok: a redelivery is answered from the record")
}