MCPcopy
hub / github.com/kopia/kopia / TestPushover

Function TestPushover

notification/sender/pushover/pushover_sender_test.go:19–95  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

17)
18
19func TestPushover(t *testing.T) {
20 ctx := testlogging.Context(t)
21
22 mux := http.NewServeMux()
23
24 var requests []*http.Request
25
26 var requestBodies []bytes.Buffer
27
28 mux.HandleFunc("/some-path", func(w http.ResponseWriter, r *http.Request) {
29 var b bytes.Buffer
30
31 io.Copy(&b, r.Body)
32
33 requestBodies = append(requestBodies, b)
34 requests = append(requests, r)
35 })
36
37 server := httptest.NewServer(mux)
38 defer server.Close()
39
40 p, err := sender.GetSender(ctx, "my-profile", "pushover", &pushover.Options{
41 AppToken: "app-token1",
42 UserKey: "user-key1",
43 Endpoint: server.URL + "/some-path",
44 })
45 require.NoError(t, err)
46
47 ph, err := sender.GetSender(ctx, "my-html-profile", "pushover", &pushover.Options{
48 AppToken: "app-token1",
49 UserKey: "user-key1",
50 Format: "html",
51 Endpoint: server.URL + "/some-path",
52 })
53 require.NoError(t, err)
54 require.Equal(t, "Pushover user \"user-key1\" app \"app-token1\" format \"txt\"", p.Summary())
55
56 require.NoError(t, p.Send(ctx, &sender.Message{Subject: "Test", Body: "This is a test.\n\n* one\n* two\n* three\n\n# Header\n## Subheader\n\n- a\n- b\n- c"}))
57 require.NoError(t, ph.Send(ctx, &sender.Message{Subject: "Test", Body: "<p>This is a HTML test</p>"}))
58
59 require.Len(t, requests, 2)
60 require.Equal(t, "application/json", requests[0].Header.Get("Content-Type"))
61
62 var body map[string]any
63
64 // Plain-text request
65 require.NoError(t, json.NewDecoder(&requestBodies[0]).Decode(&body))
66
67 require.Equal(t, "app-token1", body["token"])
68 require.Equal(t, "user-key1", body["user"])
69 require.Nil(t, body["html"])
70 require.Equal(t, "Test\n\nThis is a test.\n\n* one\n* two\n* three\n\n# Header\n## Subheader\n\n- a\n- b\n- c", body["message"])
71
72 require.NoError(t, json.NewDecoder(&requestBodies[1]).Decode(&body))
73
74 // HTML request
75 require.Equal(t, "app-token1", body["token"])
76 require.Equal(t, "user-key1", body["user"])

Callers

nothing calls this directly

Calls 8

ContextFunction · 0.92
GetSenderFunction · 0.92
EqualMethod · 0.80
CloseMethod · 0.65
SummaryMethod · 0.65
SendMethod · 0.65
GetMethod · 0.65
LenMethod · 0.45

Tested by

no test coverage detected