89 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
package quic
 | 
						|
 | 
						|
import (
 | 
						|
	"bytes"
 | 
						|
	"errors"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
	"github.com/stretchr/testify/require"
 | 
						|
)
 | 
						|
 | 
						|
func TestConnectRequestData(t *testing.T) {
 | 
						|
	var tests = []struct {
 | 
						|
		name           string
 | 
						|
		hostname       string
 | 
						|
		connectionType ConnectionType
 | 
						|
		metadata       []Metadata
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			name:           "Signature verified and request metadata is unmarshaled and read correctly",
 | 
						|
			hostname:       "tunnel.com",
 | 
						|
			connectionType: ConnectionTypeHTTP,
 | 
						|
			metadata: []Metadata{
 | 
						|
				Metadata{
 | 
						|
					Key: "key",
 | 
						|
					Val: "1234",
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	for _, test := range tests {
 | 
						|
		t.Run(test.name, func(t *testing.T) {
 | 
						|
			b := &bytes.Buffer{}
 | 
						|
			err := WriteConnectRequestData(b, test.hostname, test.connectionType, test.metadata...)
 | 
						|
			require.NoError(t, err)
 | 
						|
			reqMeta, err := ReadConnectRequestData(b)
 | 
						|
			require.NoError(t, err)
 | 
						|
 | 
						|
			assert.Equal(t, test.metadata, reqMeta.Metadata)
 | 
						|
			assert.Equal(t, test.hostname, reqMeta.Dest)
 | 
						|
			assert.Equal(t, test.connectionType, reqMeta.Type)
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestConnectResponseMeta(t *testing.T) {
 | 
						|
	var tests = []struct {
 | 
						|
		name     string
 | 
						|
		err      error
 | 
						|
		metadata []Metadata
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			name: "Signature verified and response metadata is unmarshaled and read correctly",
 | 
						|
			metadata: []Metadata{
 | 
						|
				Metadata{
 | 
						|
					Key: "key",
 | 
						|
					Val: "1234",
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name: "If error is not empty, other fields should be blank",
 | 
						|
			err:  errors.New("something happened"),
 | 
						|
			metadata: []Metadata{
 | 
						|
				Metadata{
 | 
						|
					Key: "key",
 | 
						|
					Val: "1234",
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	for _, test := range tests {
 | 
						|
		t.Run(test.name, func(t *testing.T) {
 | 
						|
			b := &bytes.Buffer{}
 | 
						|
			err := WriteConnectResponseData(b, test.err, test.metadata...)
 | 
						|
			require.NoError(t, err)
 | 
						|
			respMeta, err := ReadConnectResponseData(b)
 | 
						|
			require.NoError(t, err)
 | 
						|
 | 
						|
			if respMeta.Error == "" {
 | 
						|
				assert.Equal(t, test.metadata, respMeta.Metadata)
 | 
						|
			} else {
 | 
						|
				assert.Equal(t, 0, len(respMeta.Metadata))
 | 
						|
			}
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 |