github.com/status-im/status-go@v1.1.0/protocol/storenodes/database_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/eth-node/types" 10 ) 11 12 var ( 13 communityID1 = types.HexBytes("community001") 14 communityID2 = types.HexBytes("community002") 15 ) 16 17 func TestSyncSave(t *testing.T) { 18 db, close := setupTestDB(t, communityID1) 19 defer close() 20 21 maddr, err := multiaddr.NewMultiaddr("/dns4/test.net/tcp/30303/p2p/16Uiu2HAmMELCo218hncCtTvC2Dwbej3rbyHQcR8erXNnKGei7WPZ") 22 require.NoError(t, err) 23 24 snodes := []Storenode{ 25 { 26 CommunityID: communityID1, 27 StorenodeID: "storenode001", 28 Name: "My Mailserver", 29 Address: maddr, 30 Fleet: "prod", 31 Version: 2, 32 }, 33 } 34 35 // ======== 36 // Save 37 38 err = db.syncSave(communityID1, snodes, 0) 39 require.NoError(t, err) 40 41 dbNodes, err := db.getByCommunityID(communityID1) 42 require.NoError(t, err) 43 44 require.Len(t, dbNodes, 1) 45 require.ElementsMatch(t, dbNodes, snodes) 46 47 // ======== 48 // Update 49 50 updated := []Storenode{ 51 { 52 CommunityID: communityID1, 53 StorenodeID: "storenode001", 54 Name: "My Mailserver 2", 55 Address: maddr, 56 Fleet: "prod", 57 Version: 2, 58 }, 59 } 60 err = db.syncSave(communityID1, updated, 0) 61 require.NoError(t, err) 62 63 dbNodes, err = db.getByCommunityID(communityID1) 64 require.NoError(t, err) 65 66 require.Len(t, dbNodes, 1) 67 require.ElementsMatch(t, dbNodes, updated) 68 69 // ======== 70 // Remove 71 72 err = db.syncSave(communityID1, []Storenode{}, 0) 73 require.NoError(t, err) 74 75 dbNodes, err = db.getByCommunityID(communityID1) 76 require.NoError(t, err) 77 78 require.Len(t, dbNodes, 0) 79 }