kitty/tools/cmd/at/main_test.go
2022-11-14 15:41:46 +05:30

52 lines
1.0 KiB
Go

package at
import (
"encoding/json"
"kitty/tools/crypto"
"kitty/tools/utils"
"testing"
)
func TestRCSerialization(t *testing.T) {
serializer, err := create_serializer("", "")
if err != nil {
t.Fatal(err)
}
var ver = [3]int{1, 2, 3}
rc := utils.RemoteControlCmd{
Cmd: "test", Version: ver,
}
simple := func(expected string) {
actual, err := serializer(&rc)
if err != nil {
t.Fatal(err)
}
as := string(actual)
if as != expected {
t.Fatalf("Incorrect serialization: %s != %s", expected, as)
}
}
simple(`{"cmd":"test","version":[1,2,3]}`)
pubkey_b, _, err := crypto.KeyPair("1")
if err != nil {
t.Fatal(err)
}
pubkey, err := crypto.EncodePublicKey(pubkey_b, "1")
if err != nil {
t.Fatal(err)
}
serializer, err = create_serializer("tpw", pubkey)
if err != nil {
t.Fatal(err)
}
raw, err := serializer(&rc)
var ec utils.EncryptedRemoteControlCmd
err = json.Unmarshal([]byte(raw), &ec)
if err != nil {
t.Fatal(err)
}
if ec.Version != ver {
t.Fatal("Incorrect version in encrypted command: ", ec.Version)
}
}