Files
fscan/plugins/services/text_protocol_test.go
T

45 lines
1.5 KiB
Go

//go:build !plugin_selective || plugin_activemq || plugin_imap || plugin_pop3 || plugin_redis
package services
import "testing"
func TestBuildRedisAuthCommandUsesBulkString(t *testing.T) {
got := string(buildRedisAuthCommand("pa ss\r\nword"))
want := "*2\r\n$4\r\nAUTH\r\n$11\r\npa ss\r\nword\r\n"
if got != want {
t.Fatalf("buildRedisAuthCommand() = %q, want %q", got, want)
}
}
func TestBuildRedisCommandKeepsInjectedNewlinesInsideBulkString(t *testing.T) {
got := string(buildRedisCommand("CONFIG", "SET", "dir", "/tmp\r\nSAVE"))
want := "*4\r\n$6\r\nCONFIG\r\n$3\r\nSET\r\n$3\r\ndir\r\n$10\r\n/tmp\r\nSAVE\r\n"
if got != want {
t.Fatalf("buildRedisCommand() = %q, want %q", got, want)
}
}
func TestBuildIMAPLoginCommandQuotesCredentials(t *testing.T) {
got, err := buildIMAPLoginCommand("a001", `user name`, `pa"ss\word`)
if err != nil {
t.Fatalf("buildIMAPLoginCommand() error = %v", err)
}
want := "a001 LOGIN \"user name\" \"pa\\\"ss\\\\word\"\r\n"
if got != want {
t.Fatalf("buildIMAPLoginCommand() = %q, want %q", got, want)
}
}
func TestTextProtocolCredentialsRejectLineBreaks(t *testing.T) {
if _, err := buildIMAPLoginCommand("a001", "user", "pa\nss"); err == nil {
t.Fatal("buildIMAPLoginCommand() error = nil, want line break rejection")
}
if err := rejectLineBreaks("user", "pa\rss"); err == nil {
t.Fatal("rejectLineBreaks() error = nil, want line break rejection")
}
if err := rejectLineBreaks("user", "pass"); err != nil {
t.Fatalf("rejectLineBreaks() error = %v, want nil", err)
}
}