34 lines
1.3 KiB
Go
34 lines
1.3 KiB
Go
package httpapi
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/kristianwind/verdande/internal/config"
|
||
|
|
)
|
||
|
|
|
||
|
|
// The VAPID subject has to be one a push service will accept. Apple answers 403 to
|
||
|
|
// a mailto with a made-up domain, which is what the no-mail fallback used to be, so
|
||
|
|
// every push to an Apple device was refused. With no real address, the instance's
|
||
|
|
// own https URL is used instead — valid, real, and accepted.
|
||
|
|
func TestVAPIDSubject(t *testing.T) {
|
||
|
|
cases := []struct {
|
||
|
|
name string
|
||
|
|
from string
|
||
|
|
baseURL string
|
||
|
|
want string
|
||
|
|
}{
|
||
|
|
{"a real address is used as-is", "todo@example.dk", "https://verdande.example.dk", "mailto:todo@example.dk"},
|
||
|
|
{"no mail falls back to the https url", "", "https://verdande.example.dk", "https://verdande.example.dk"},
|
||
|
|
{"the localhost default is not a real address", "verdande@localhost", "https://verdande.example.dk", "https://verdande.example.dk"},
|
||
|
|
{"a plain http dev url still serves as a subject", "", "http://localhost:8080", "http://localhost:8080"},
|
||
|
|
}
|
||
|
|
for _, tc := range cases {
|
||
|
|
t.Run(tc.name, func(t *testing.T) {
|
||
|
|
s := &Server{cfg: &config.Config{BaseURL: tc.baseURL, SMTP: config.SMTP{From: tc.from}}}
|
||
|
|
if got := s.vapidSubject(); got != tc.want {
|
||
|
|
t.Errorf("vapidSubject() = %q, want %q", got, tc.want)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|