ledisdb/server/cmd_server_test.go

90 lines
1.7 KiB
Go

package server
import (
"testing"
"github.com/siddontang/goredis"
)
func TestAuth(t *testing.T) {
c1 := getTestConn()
defer c1.Close()
// Should error, no params
_, err := c1.Do("AUTH")
if err == nil {
t.Fatal(err)
}
// Should error, invalid pass
_, err = c1.Do("AUTH", "password")
if err.Error() != "authentication failure" {
t.Fatal("Expected authentication error:", err)
}
c2 := getTestConnAuth("password")
defer c2.Close()
// Should fail doing a command as we've not authed
_, err = c2.Do("GET", "tmp_select_key")
if err.Error() != "not authenticated" {
t.Fatal("Expected authentication error:", err)
}
// Login
_, err = c2.Do("AUTH", "password")
if err != nil {
t.Fatal(err)
}
// Should be ok doing a command
_, err = c2.Do("GET", "tmp_select_key")
if err != nil {
t.Fatal(err)
}
// Log out by sending wrong pass
_, err = c2.Do("AUTH", "wrong password")
if err.Error() != "authentication failure" {
t.Fatal("Expected authentication error:", err)
}
// Should fail doing a command as we're logged out
_, err = c2.Do("GET", "tmp_select_key")
if err.Error() != "not authenticated" {
t.Fatal("Expected authentication error:", err)
}
}
func TestXSelect(t *testing.T) {
c1 := getTestConn()
defer c1.Close()
c2 := getTestConn()
defer c2.Close()
_, err := c1.Do("XSELECT", "1", "THEN", "SET", "tmp_select_key", "1")
if err != nil {
t.Fatal(err)
}
_, err = goredis.Int(c2.Do("GET", "tmp_select_key"))
if err != goredis.ErrNil {
t.Fatal(err)
}
n, _ := goredis.Int(c2.Do("XSELECT", "1", "THEN", "GET", "tmp_select_key"))
if n != 1 {
t.Fatal(n)
}
n, _ = goredis.Int(c2.Do("GET", "tmp_select_key"))
if n != 1 {
t.Fatal(n)
}
c1.Do("SELECT", 0)
c2.Do("SELECT", 0)
}