83 lines
2.1 KiB
Go
83 lines
2.1 KiB
Go
package client
|
|
|
|
import (
|
|
"github.com/go-stomp/stomp/v3"
|
|
"github.com/go-stomp/stomp/v3/frame"
|
|
. "gopkg.in/check.v1"
|
|
)
|
|
|
|
type FrameSuite struct{}
|
|
|
|
var _ = Suite(&FrameSuite{})
|
|
|
|
func (s *FrameSuite) TestDetermineVersion_V10_Connect(c *C) {
|
|
f := frame.New(frame.CONNECT)
|
|
version, err := determineVersion(f)
|
|
c.Check(err, IsNil)
|
|
c.Check(version, Equals, stomp.V10)
|
|
}
|
|
|
|
func (s *FrameSuite) TestDetermineVersion_V10_Stomp(c *C) {
|
|
// the "STOMP" command was introduced in V1.1, so it must
|
|
// have an accept-version header
|
|
f := frame.New(frame.STOMP)
|
|
_, err := determineVersion(f)
|
|
c.Check(err, Equals, missingHeader(frame.AcceptVersion))
|
|
}
|
|
|
|
func (s *FrameSuite) TestDetermineVersion_V11_Connect(c *C) {
|
|
f := frame.New(frame.CONNECT)
|
|
f.Header.Add(frame.AcceptVersion, "1.1")
|
|
version, err := determineVersion(f)
|
|
c.Check(version, Equals, stomp.V11)
|
|
c.Check(err, IsNil)
|
|
}
|
|
|
|
func (s *FrameSuite) TestDetermineVersion_MultipleVersions(c *C) {
|
|
f := frame.New(frame.CONNECT)
|
|
f.Header.Add(frame.AcceptVersion, "1.2,1.1,1.0,2.0")
|
|
version, err := determineVersion(f)
|
|
c.Check(version, Equals, stomp.V12)
|
|
c.Check(err, IsNil)
|
|
}
|
|
|
|
func (s *FrameSuite) TestDetermineVersion_IncompatibleVersions(c *C) {
|
|
f := frame.New(frame.CONNECT)
|
|
f.Header.Add(frame.AcceptVersion, "0.2,0.1,1.3,2.0")
|
|
version, err := determineVersion(f)
|
|
c.Check(version, Equals, stomp.Version(""))
|
|
c.Check(err, Equals, unknownVersion)
|
|
}
|
|
|
|
func (s *FrameSuite) TestHeartBeat(c *C) {
|
|
f := frame.New(frame.CONNECT,
|
|
frame.AcceptVersion, "1.2",
|
|
frame.Host, "XX")
|
|
|
|
// no heart-beat header means zero values
|
|
x, y, err := getHeartBeat(f)
|
|
c.Check(x, Equals, 0)
|
|
c.Check(y, Equals, 0)
|
|
c.Check(err, IsNil)
|
|
|
|
f.Header.Add("heart-beat", "123,456")
|
|
x, y, err = getHeartBeat(f)
|
|
c.Check(x, Equals, 123)
|
|
c.Check(y, Equals, 456)
|
|
c.Check(err, IsNil)
|
|
|
|
f.Header.Set(frame.HeartBeat, "invalid")
|
|
x, y, err = getHeartBeat(f)
|
|
c.Check(x, Equals, 0)
|
|
c.Check(y, Equals, 0)
|
|
c.Check(err, Equals, invalidHeartBeat)
|
|
|
|
f.Header.Del(frame.HeartBeat)
|
|
_, _, err = getHeartBeat(f)
|
|
c.Check(err, IsNil)
|
|
|
|
f.Command = frame.SEND
|
|
_, _, err = getHeartBeat(f)
|
|
c.Check(err, Equals, invalidOperationForFrame)
|
|
}
|