49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package mqtpp
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"google.golang.org/protobuf/encoding/protowire"
|
|
)
|
|
|
|
func TestMQTTPPEncryptedPacketDefaultRejected(t *testing.T) {
|
|
raw := encryptedServiceEnvelopeTestPayload()
|
|
valid, payload, record := MQTTPP("msh/test", raw, nil, Options{})
|
|
if valid {
|
|
t.Fatalf("valid = true, want false")
|
|
}
|
|
if payload != nil {
|
|
t.Fatalf("payload = %v, want nil", payload)
|
|
}
|
|
if record["type"] != "encrypted_packet" {
|
|
t.Fatalf("type = %v, want encrypted_packet", record["type"])
|
|
}
|
|
if record["error"] != "cannot be decrypted" {
|
|
t.Fatalf("error = %v, want cannot be decrypted", record["error"])
|
|
}
|
|
}
|
|
|
|
func TestMQTTPPEncryptedPacketAllowed(t *testing.T) {
|
|
raw := encryptedServiceEnvelopeTestPayload()
|
|
valid, payload, record := MQTTPP("msh/test", raw, nil, Options{AllowEncryptedForwarding: true})
|
|
if !valid {
|
|
t.Fatalf("valid = false, want true: %+v", record)
|
|
}
|
|
if string(payload) != string(raw) {
|
|
t.Fatalf("payload = %v, want raw payload", payload)
|
|
}
|
|
if record["type"] != "encrypted_packet" {
|
|
t.Fatalf("type = %v, want encrypted_packet", record["type"])
|
|
}
|
|
if record["error"] != nil {
|
|
t.Fatalf("error = %v, want nil", record["error"])
|
|
}
|
|
}
|
|
|
|
func encryptedServiceEnvelopeTestPayload() []byte {
|
|
packet := protowire.AppendTag(nil, 5, protowire.BytesType)
|
|
packet = protowire.AppendBytes(packet, []byte{1, 2, 3, 4})
|
|
envelope := protowire.AppendTag(nil, 1, protowire.BytesType)
|
|
return protowire.AppendBytes(envelope, packet)
|
|
}
|