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 }