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  }