github.com/xmidt-org/webpa-common@v1.11.9/device/id_test.go (about)

     1  package device
     2  
     3  import (
     4  	"net/http/httptest"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestIntToMAC(t *testing.T) {
    11  	assert := assert.New(t)
    12  	testData := []struct {
    13  		integer    uint64
    14  		expectedID ID
    15  	}{
    16  		{0, "mac:000000000000"},
    17  		{0x112233445566, "mac:112233445566"},
    18  		{0xF1A293C46570, "mac:f1a293c46570"},
    19  		{0x61FC, "mac:0000000061fc"},
    20  	}
    21  
    22  	for _, record := range testData {
    23  		t.Logf("%v", record)
    24  		actualID := IntToMAC(record.integer)
    25  		assert.Equal(record.expectedID, actualID)
    26  	}
    27  }
    28  
    29  func TestParseID(t *testing.T) {
    30  	assert := assert.New(t)
    31  	testData := []struct {
    32  		id           string
    33  		expected     ID
    34  		expectsError bool
    35  	}{
    36  		{"MAC:11:22:33:44:55:66", "mac:112233445566", false},
    37  		{"MAC:11aaBB445566", "mac:11aabb445566", false},
    38  		{"mac:11-aa-BB-44-55-66", "mac:11aabb445566", false},
    39  		{"mac:11,aa,BB,44,55,66", "mac:11aabb445566", false},
    40  		{"uuid:anything Goes!", "uuid:anything Goes!", false},
    41  		{"dns:anything Goes!", "dns:anything Goes!", false},
    42  		{"serial:1234", "serial:1234", false},
    43  		{"mac:11-aa-BB-44-55-66/service", "mac:11aabb445566", false},
    44  		{"mac:11-aa-BB-44-55-66/service/", "mac:11aabb445566", false},
    45  		{"mac:11-aa-BB-44-55-66/service/ignoreMe", "mac:11aabb445566", false},
    46  		{"mac:11-aa-BB-44-55-66/service/foo/bar", "mac:11aabb445566", false},
    47  		{"invalid:a-BB-44-55", "", true},
    48  		{"mac:11-aa-BB-44-55", "", true},
    49  		{"MAC:invalid45566", "", true},
    50  		{"mac:481d70187fef", "mac:481d70187fef", false},
    51  		{"mac:481d70187fef/parodus/tag/test0", "mac:481d70187fef", false},
    52  	}
    53  
    54  	for _, record := range testData {
    55  		t.Run(record.id, func(t *testing.T) {
    56  			id, err := ParseID(record.id)
    57  			assert.Equal(record.expected, id)
    58  			assert.Equal(record.expectsError, err != nil)
    59  			assert.Equal([]byte(record.expected), id.Bytes())
    60  		})
    61  	}
    62  }
    63  
    64  func TestIDHashParser(t *testing.T) {
    65  	var (
    66  		assert            = assert.New(t)
    67  		validDeviceName   = "mac:112233445566"
    68  		invalidDeviceName = "this is not valid"
    69  
    70  		testData = []struct {
    71  			deviceName   string
    72  			expectsError bool
    73  		}{
    74  			{
    75  				deviceName:   validDeviceName,
    76  				expectsError: false,
    77  			},
    78  			{
    79  				deviceName:   invalidDeviceName,
    80  				expectsError: true,
    81  			},
    82  			{
    83  				deviceName:   "",
    84  				expectsError: true,
    85  			},
    86  		}
    87  	)
    88  
    89  	for _, record := range testData {
    90  		t.Logf("%v", record)
    91  
    92  		request := httptest.NewRequest("GET", "http://burrito-sightings.net", nil)
    93  		request.Header.Set(DeviceNameHeader, record.deviceName)
    94  
    95  		actualKey, err := IDHashParser(request)
    96  		if record.expectsError {
    97  			assert.Empty(actualKey)
    98  			assert.Error(err)
    99  		} else {
   100  			assert.Equal(record.deviceName, string(actualKey))
   101  			assert.NoError(err)
   102  		}
   103  	}
   104  }