gitlab.com/SiaPrime/SiaPrime@v1.4.1/node/api/gateway_test.go (about)

     1  package api
     2  
     3  import (
     4  	"testing"
     5  
     6  	"gitlab.com/SiaPrime/SiaPrime/build"
     7  	"gitlab.com/SiaPrime/SiaPrime/modules/gateway"
     8  )
     9  
    10  // TestGatewayStatus checks that the /gateway/status call is returning a corect
    11  // peerlist.
    12  func TestGatewayStatus(t *testing.T) {
    13  	if testing.Short() {
    14  		t.SkipNow()
    15  	}
    16  	t.Parallel()
    17  	st, err := createServerTester(t.Name())
    18  	if err != nil {
    19  		t.Fatal(err)
    20  	}
    21  	defer st.server.panicClose()
    22  
    23  	var info GatewayGET
    24  	st.getAPI("/gateway", &info)
    25  	if len(info.Peers) != 0 {
    26  		t.Fatal("/gateway gave bad peer list:", info.Peers)
    27  	}
    28  }
    29  
    30  // TestGatewayPeerConnect checks that /gateway/connect is adding a peer to the
    31  // gateway's peerlist.
    32  func TestGatewayPeerConnect(t *testing.T) {
    33  	if testing.Short() {
    34  		t.SkipNow()
    35  	}
    36  	t.Parallel()
    37  	st, err := createServerTester(t.Name())
    38  	if err != nil {
    39  		t.Fatal(err)
    40  	}
    41  	defer st.server.panicClose()
    42  
    43  	peer, err := gateway.New("localhost:0", false, build.TempDir("api", t.Name()+"2", "gateway"))
    44  	if err != nil {
    45  		t.Fatal(err)
    46  	}
    47  	defer func() {
    48  		err := peer.Close()
    49  		if err != nil {
    50  			panic(err)
    51  		}
    52  	}()
    53  	err = st.stdPostAPI("/gateway/connect/"+string(peer.Address()), nil)
    54  	if err != nil {
    55  		t.Fatal(err)
    56  	}
    57  
    58  	var info GatewayGET
    59  	err = st.getAPI("/gateway", &info)
    60  	if err != nil {
    61  		t.Fatal(err)
    62  	}
    63  	if len(info.Peers) != 1 || info.Peers[0].NetAddress != peer.Address() {
    64  		t.Fatal("/gateway/connect did not connect to peer", peer.Address())
    65  	}
    66  }
    67  
    68  // TestGatewayPeerDisconnect checks that /gateway/disconnect removes the
    69  // correct peer from the gateway's peerlist.
    70  func TestGatewayPeerDisconnect(t *testing.T) {
    71  	if testing.Short() {
    72  		t.SkipNow()
    73  	}
    74  	t.Parallel()
    75  	st, err := createServerTester(t.Name())
    76  	if err != nil {
    77  		t.Fatal(err)
    78  	}
    79  	defer st.server.panicClose()
    80  
    81  	peer, err := gateway.New("localhost:0", false, build.TempDir("api", t.Name()+"2", "gateway"))
    82  	if err != nil {
    83  		t.Fatal(err)
    84  	}
    85  	defer func() {
    86  		err := peer.Close()
    87  		if err != nil {
    88  			panic(err)
    89  		}
    90  	}()
    91  	err = st.stdPostAPI("/gateway/connect/"+string(peer.Address()), nil)
    92  	if err != nil {
    93  		t.Fatal(err)
    94  	}
    95  
    96  	var info GatewayGET
    97  	st.getAPI("/gateway", &info)
    98  	if len(info.Peers) != 1 || info.Peers[0].NetAddress != peer.Address() {
    99  		t.Fatal("/gateway/connect did not connect to peer", peer.Address())
   100  	}
   101  
   102  	err = st.stdPostAPI("/gateway/disconnect/"+string(peer.Address()), nil)
   103  	if err != nil {
   104  		t.Fatal(err)
   105  	}
   106  	err = st.getAPI("/gateway", &info)
   107  	if err != nil {
   108  		t.Fatal(err)
   109  	}
   110  	if len(info.Peers) != 0 {
   111  		t.Fatal("/gateway/disconnect did not disconnect from peer", peer.Address())
   112  	}
   113  }