| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- package nebula
 
- import (
 
- 	"reflect"
 
- 	"testing"
 
- 	"github.com/stretchr/testify/assert"
 
- )
 
- type headerTest struct {
 
- 	expectedBytes []byte
 
- 	*Header
 
- }
 
- // 0001 0010 00010010
 
- var headerBigEndianTests = []headerTest{{
 
- 	expectedBytes: []byte{0x54, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9},
 
- 	// 1010 0000
 
- 	Header: &Header{
 
- 		// 1111 1+2+4+8 = 15
 
- 		Version:        5,
 
- 		Type:           4,
 
- 		Subtype:        0,
 
- 		Reserved:       0,
 
- 		RemoteIndex:    10,
 
- 		MessageCounter: 9,
 
- 	},
 
- },
 
- }
 
- func TestEncode(t *testing.T) {
 
- 	for _, tt := range headerBigEndianTests {
 
- 		b, err := tt.Encode(make([]byte, HeaderLen))
 
- 		if err != nil {
 
- 			t.Fatal(err)
 
- 		}
 
- 		assert.Equal(t, tt.expectedBytes, b)
 
- 	}
 
- }
 
- func TestParse(t *testing.T) {
 
- 	for _, tt := range headerBigEndianTests {
 
- 		b := tt.expectedBytes
 
- 		parsedHeader := &Header{}
 
- 		parsedHeader.Parse(b)
 
- 		if !reflect.DeepEqual(tt.Header, parsedHeader) {
 
- 			t.Fatalf("got %#v; want %#v", parsedHeader, tt.Header)
 
- 		}
 
- 	}
 
- }
 
- func TestTypeName(t *testing.T) {
 
- 	assert.Equal(t, "test", TypeName(test))
 
- 	assert.Equal(t, "test", (&Header{Type: test}).TypeName())
 
- 	assert.Equal(t, "unknown", TypeName(99))
 
- 	assert.Equal(t, "unknown", (&Header{Type: 99}).TypeName())
 
- }
 
- func TestSubTypeName(t *testing.T) {
 
- 	assert.Equal(t, "testRequest", SubTypeName(test, testRequest))
 
- 	assert.Equal(t, "testRequest", (&Header{Type: test, Subtype: testRequest}).SubTypeName())
 
- 	assert.Equal(t, "unknown", SubTypeName(99, testRequest))
 
- 	assert.Equal(t, "unknown", (&Header{Type: 99, Subtype: testRequest}).SubTypeName())
 
- 	assert.Equal(t, "unknown", SubTypeName(test, 99))
 
- 	assert.Equal(t, "unknown", (&Header{Type: test, Subtype: 99}).SubTypeName())
 
- 	assert.Equal(t, "none", SubTypeName(message, 0))
 
- 	assert.Equal(t, "none", (&Header{Type: message, Subtype: 0}).SubTypeName())
 
- }
 
- func TestTypeMap(t *testing.T) {
 
- 	// Force people to document this stuff
 
- 	assert.Equal(t, map[NebulaMessageType]string{
 
- 		handshake:       "handshake",
 
- 		message:         "message",
 
- 		recvError:       "recvError",
 
- 		lightHouse:      "lightHouse",
 
- 		test:            "test",
 
- 		closeTunnel:     "closeTunnel",
 
- 		testRemote:      "testRemote",
 
- 		testRemoteReply: "testRemoteReply",
 
- 	}, typeMap)
 
- 	assert.Equal(t, map[NebulaMessageType]*map[NebulaMessageSubType]string{
 
- 		message:     &subTypeNoneMap,
 
- 		recvError:   &subTypeNoneMap,
 
- 		lightHouse:  &subTypeNoneMap,
 
- 		test:        &subTypeTestMap,
 
- 		closeTunnel: &subTypeNoneMap,
 
- 		handshake: {
 
- 			handshakeIXPSK0: "ix_psk0",
 
- 		},
 
- 		testRemote:      &subTypeNoneMap,
 
- 		testRemoteReply: &subTypeNoneMap,
 
- 	}, subTypeMap)
 
- }
 
- func TestHeader_String(t *testing.T) {
 
- 	assert.Equal(
 
- 		t,
 
- 		"ver=100 type=test subtype=testRequest reserved=0x63 remoteindex=98 messagecounter=97",
 
- 		(&Header{100, test, testRequest, 99, 98, 97}).String(),
 
- 	)
 
- }
 
- func TestHeader_MarshalJSON(t *testing.T) {
 
- 	b, err := (&Header{100, test, testRequest, 99, 98, 97}).MarshalJSON()
 
- 	assert.Nil(t, err)
 
- 	assert.Equal(
 
- 		t,
 
- 		"{\"messageCounter\":97,\"remoteIndex\":98,\"reserved\":99,\"subType\":\"testRequest\",\"type\":\"test\",\"version\":100}",
 
- 		string(b),
 
- 	)
 
- }
 
 
  |