Skip to content

Commit

Permalink
Add interop tests for Call message
Browse files Browse the repository at this point in the history
  • Loading branch information
muzzammilshahid committed Jul 10, 2024
1 parent 4329ecd commit ea15756
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
19 changes: 19 additions & 0 deletions tests/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,16 @@ package tests

import (
"bytes"
"encoding/hex"
"fmt"
"os/exec"
"strings"
"testing"

"github.com/stretchr/testify/require"

"github.com/xconnio/wampproto-go/messages"
"github.com/xconnio/wampproto-go/serializers"
)

func RunCommand(command string) (string, error) {
Expand All @@ -23,3 +30,15 @@ func RunCommand(command string) (string, error) {

return output, nil
}

func RunCommandAndDeserialize(t *testing.T, command string, serializer serializers.Serializer) messages.Message {
output, err := RunCommand(command)
require.NoError(t, err)
outputBytes, err := hex.DecodeString(output)
require.NoError(t, err)

msg, err := serializer.Deserialize(outputBytes)
require.NoError(t, err)

return msg
}
50 changes: 50 additions & 0 deletions tests/interop/messages/call_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package messages_test

import (
"fmt"
"reflect"
"testing"

"github.com/stretchr/testify/require"
"github.com/xconnio/wampproto-go/serializers"

Check failure on line 9 in tests/interop/messages/call_test.go

View workflow job for this annotation

GitHub Actions / build

File is not `gci`-ed with --skip-generated -s standard -s default -s prefix(github.com/xconnio) --custom-order (gci)

"github.com/xconnio/wampproto-go/messages"

Check failure on line 11 in tests/interop/messages/call_test.go

View workflow job for this annotation

GitHub Actions / build

File is not `gci`-ed with --skip-generated -s standard -s default -s prefix(github.com/xconnio) --custom-order (gci)
"github.com/xconnio/wampproto-go/tests"
)

func callsEqual(msg1 *messages.Call, msg2 *messages.Call) bool {
return msg1.RequestID() == msg2.RequestID() &&
msg1.Procedure() == msg2.Procedure() &&
reflect.DeepEqual(msg1.Options(), msg2.Options()) &&
reflect.DeepEqual(msg1.Args(), msg2.Args()) &&
reflect.DeepEqual(msg1.KwArgs(), msg2.KwArgs())
}

func TestCallJSONSerializer(t *testing.T) {
var message = messages.NewCall(1, map[string]any{}, "test", nil, nil)
command := fmt.Sprintf("message call %v %s --serializer json --output hex", message.RequestID(), message.Procedure())
var serializer = &serializers.JSONSerializer{}

msg := tests.RunCommandAndDeserialize(t, command, serializer)
require.True(t, callsEqual(message, msg.(*messages.Call)))
}

func TestCallCBORSerializer(t *testing.T) {
var message = messages.NewCall(1, map[string]any{}, "test", []any{"abc"}, map[string]any{"abc": "xyz"})
command := fmt.Sprintf("message call %v %s abc -k abc=xyz --serializer cbor --output hex",
message.RequestID(), message.Procedure())
var serializer = &serializers.CBORSerializer{}

msg := tests.RunCommandAndDeserialize(t, command, serializer)
require.True(t, callsEqual(message, msg.(*messages.Call)))
}

func TestCallMsgPackSerializer(t *testing.T) {
var message = messages.NewCall(1, map[string]any{}, "test", []any{"abc"}, map[string]any{"abc": "xyz"})
command := fmt.Sprintf("message call %v %s abc -k abc=xyz --serializer msgpack --output hex",
message.RequestID(), message.Procedure())
var serializer = &serializers.MsgPackSerializer{}

msg := tests.RunCommandAndDeserialize(t, command, serializer)
require.True(t, callsEqual(message, msg.(*messages.Call)))
}

0 comments on commit ea15756

Please sign in to comment.