39 lines
1.5 KiB
Go
39 lines
1.5 KiB
Go
package webui
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"net/http"
|
||
|
|
"net/http/httptest"
|
||
|
|
"strconv"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
// TestWebmailShortcutsPresentOnFolderAndMessageViews confirms the keyboard-shortcut
|
||
|
|
// script and the message-view button ids it hooks into are actually rendered, not
|
||
|
|
// just defined-but-never-invoked.
|
||
|
|
func TestWebmailShortcutsPresentOnFolderAndMessageViews(t *testing.T) {
|
||
|
|
app := newTestApp(t)
|
||
|
|
mux := app.Mux()
|
||
|
|
domains, _ := app.DB.ListDomains()
|
||
|
|
mailboxID := createTestMailboxWithPassword(t, app, "shortcuts@example.com", domains[0].ID, "shortcuts-password-1!")
|
||
|
|
cookie := webmailLoginSession(t, app, mailboxID)
|
||
|
|
uid := storeTestMessage(t, app, mailboxID, "INBOX", "someone@example.com", "hi", "body")
|
||
|
|
|
||
|
|
folderReq := httptest.NewRequest(http.MethodGet, MailboxPrefix+"/mail/INBOX", nil)
|
||
|
|
folderReq.AddCookie(cookie)
|
||
|
|
folderRec := httptest.NewRecorder()
|
||
|
|
mux.ServeHTTP(folderRec, folderReq)
|
||
|
|
if !strings.Contains(folderRec.Body.String(), "msg-row-selected") {
|
||
|
|
t.Fatalf("expected the shortcuts script rendered on the folder view, got: %s", folderRec.Body.String())
|
||
|
|
}
|
||
|
|
|
||
|
|
msgReq := httptest.NewRequest(http.MethodGet, MailboxPrefix+"/mail/INBOX/"+strconv.FormatInt(uid, 10), nil)
|
||
|
|
msgReq.AddCookie(cookie)
|
||
|
|
msgRec := httptest.NewRecorder()
|
||
|
|
mux.ServeHTTP(msgRec, msgReq)
|
||
|
|
msgBody := msgRec.Body.String()
|
||
|
|
if !strings.Contains(msgBody, `id="replyBtn"`) || !strings.Contains(msgBody, "msg-row-selected") {
|
||
|
|
t.Fatalf("expected both the reply button id and the shortcuts script on the message view, got: %s", msgBody)
|
||
|
|
}
|
||
|
|
}
|