github.com/MetalBlockchain/metalgo@v1.11.9/ids/test_aliases.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package ids 5 6 import "github.com/stretchr/testify/require" 7 8 var AliasTests = []func(require *require.Assertions, r AliaserReader, w AliaserWriter){ 9 AliaserLookupErrorTest, 10 AliaserLookupTest, 11 AliaserAliasesEmptyTest, 12 AliaserAliasesTest, 13 AliaserPrimaryAliasTest, 14 AliaserAliasClashTest, 15 AliaserRemoveAliasTest, 16 } 17 18 func AliaserLookupErrorTest(require *require.Assertions, r AliaserReader, _ AliaserWriter) { 19 _, err := r.Lookup("Batman") 20 // TODO: require error to be errNoIDWithAlias 21 require.Error(err) //nolint:forbidigo // currently returns grpc errors too 22 } 23 24 func AliaserLookupTest(require *require.Assertions, r AliaserReader, w AliaserWriter) { 25 id := ID{'K', 'a', 't', 'e', ' ', 'K', 'a', 'n', 'e'} 26 require.NoError(w.Alias(id, "Batwoman")) 27 28 res, err := r.Lookup("Batwoman") 29 require.NoError(err) 30 require.Equal(id, res) 31 } 32 33 func AliaserAliasesEmptyTest(require *require.Assertions, r AliaserReader, _ AliaserWriter) { 34 id := ID{'J', 'a', 'm', 'e', 's', ' ', 'G', 'o', 'r', 'd', 'o', 'n'} 35 36 aliases, err := r.Aliases(id) 37 require.NoError(err) 38 require.Empty(aliases) 39 } 40 41 func AliaserAliasesTest(require *require.Assertions, r AliaserReader, w AliaserWriter) { 42 id := ID{'B', 'r', 'u', 'c', 'e', ' ', 'W', 'a', 'y', 'n', 'e'} 43 44 require.NoError(w.Alias(id, "Batman")) 45 require.NoError(w.Alias(id, "Dark Knight")) 46 47 aliases, err := r.Aliases(id) 48 require.NoError(err) 49 50 expected := []string{"Batman", "Dark Knight"} 51 require.Equal(expected, aliases) 52 } 53 54 func AliaserPrimaryAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter) { 55 id1 := ID{'J', 'a', 'm', 'e', 's', ' ', 'G', 'o', 'r', 'd', 'o', 'n'} 56 id2 := ID{'B', 'r', 'u', 'c', 'e', ' ', 'W', 'a', 'y', 'n', 'e'} 57 58 require.NoError(w.Alias(id2, "Batman")) 59 require.NoError(w.Alias(id2, "Dark Knight")) 60 61 _, err := r.PrimaryAlias(id1) 62 // TODO: require error to be errNoAliasForID 63 require.Error(err) //nolint:forbidigo // currently returns grpc errors too 64 65 expected := "Batman" 66 res, err := r.PrimaryAlias(id2) 67 require.NoError(err) 68 require.Equal(expected, res) 69 } 70 71 func AliaserAliasClashTest(require *require.Assertions, _ AliaserReader, w AliaserWriter) { 72 id1 := ID{'B', 'r', 'u', 'c', 'e', ' ', 'W', 'a', 'y', 'n', 'e'} 73 id2 := ID{'D', 'i', 'c', 'k', ' ', 'G', 'r', 'a', 'y', 's', 'o', 'n'} 74 75 require.NoError(w.Alias(id1, "Batman")) 76 77 err := w.Alias(id2, "Batman") 78 // TODO: require error to be errAliasAlreadyMapped 79 require.Error(err) //nolint:forbidigo // currently returns grpc errors too 80 } 81 82 func AliaserRemoveAliasTest(require *require.Assertions, r AliaserReader, w AliaserWriter) { 83 id1 := ID{'B', 'r', 'u', 'c', 'e', ' ', 'W', 'a', 'y', 'n', 'e'} 84 id2 := ID{'J', 'a', 'm', 'e', 's', ' ', 'G', 'o', 'r', 'd', 'o', 'n'} 85 86 require.NoError(w.Alias(id1, "Batman")) 87 require.NoError(w.Alias(id1, "Dark Knight")) 88 89 w.RemoveAliases(id1) 90 91 _, err := r.PrimaryAlias(id1) 92 // TODO: require error to be errNoAliasForID 93 require.Error(err) //nolint:forbidigo // currently returns grpc errors too 94 95 require.NoError(w.Alias(id2, "Batman")) 96 require.NoError(w.Alias(id2, "Dark Knight")) 97 require.NoError(w.Alias(id1, "Dark Night Rises")) 98 }