github.com/status-im/status-go@v1.1.0/protocol/storenodes/storenodes_test.go (about) 1 package storenodes 2 3 import ( 4 "testing" 5 6 "github.com/multiformats/go-multiaddr" 7 "github.com/stretchr/testify/require" 8 9 "github.com/status-im/status-go/services/mailservers" 10 ) 11 12 func TestSerialization(t *testing.T) { 13 maddr, err := multiaddr.NewMultiaddr("/dns4/test.net/tcp/30303/p2p/16Uiu2HAmMELCo218hncCtTvC2Dwbej3rbyHQcR8erXNnKGei7WPZ") 14 require.NoError(t, err) 15 snodes := Storenodes{ 16 { 17 CommunityID: communityID1, 18 StorenodeID: "storenode001", 19 Name: "My Mailserver", 20 Address: maddr, 21 Fleet: "prod", 22 Version: 2, 23 }, 24 } 25 26 snodesProtobuf := snodes.ToProtobuf() 27 28 snodes2 := FromProtobuf(snodesProtobuf, 0) 29 30 require.Equal(t, snodes[0].Address.String(), snodes2[0].Address.String()) 31 } 32 33 func TestUpdateStorenodesInDB(t *testing.T) { 34 db, close := setupTestDB(t, communityID1, communityID2) 35 defer close() 36 37 maddr, err := multiaddr.NewMultiaddr("/dns4/test.net/tcp/30303/p2p/16Uiu2HAmMELCo218hncCtTvC2Dwbej3rbyHQcR8erXNnKGei7WPZ") 38 require.NoError(t, err) 39 40 csn := NewCommunityStorenodes(db, nil) 41 snodes1 := []Storenode{ 42 { 43 CommunityID: communityID1, 44 StorenodeID: "storenode001", 45 Name: "My Mailserver", 46 Address: maddr, 47 Fleet: "prod", 48 Version: 2, 49 }, 50 } 51 snodes2 := []Storenode{ 52 { 53 CommunityID: communityID2, 54 StorenodeID: "storenode002", 55 Name: "My Mailserver", 56 Address: maddr, 57 Fleet: "prod", 58 Version: 2, 59 }, 60 } 61 // populate db 62 err = csn.UpdateStorenodesInDB(communityID1, snodes1, 0) 63 require.NoError(t, err) 64 err = csn.UpdateStorenodesInDB(communityID2, snodes2, 0) 65 require.NoError(t, err) 66 67 // check if storenodes are loaded 68 ms1, err := csn.GetStorenodeByCommunityID(communityID1.String()) 69 require.NoError(t, err) 70 matchStoreNode(t, snodes1[0], ms1) 71 72 ms2, err := csn.GetStorenodeByCommunityID(communityID2.String()) 73 require.NoError(t, err) 74 matchStoreNode(t, snodes2[0], ms2) 75 } 76 77 func matchStoreNode(t *testing.T, sn Storenode, ms mailservers.Mailserver) { 78 require.Equal(t, sn.StorenodeID, ms.ID) 79 require.Equal(t, sn.Name, ms.Name) 80 require.Equal(t, sn.Address.String(), (*ms.Addr).String()) 81 require.Equal(t, sn.Fleet, ms.Fleet) 82 }