github.com/argoproj/argo-cd/v2@v2.10.9/server/application/websocket_test.go (about)

     1  package application
     2  
     3  import (
     4  	"encoding/json"
     5  	"github.com/gorilla/websocket"
     6  	"github.com/stretchr/testify/assert"
     7  	"net/http"
     8  	"net/http/httptest"
     9  	"strings"
    10  	"testing"
    11  )
    12  
    13  func reconnect(w http.ResponseWriter, r *http.Request) {
    14  	var upgrader = websocket.Upgrader{}
    15  	c, err := upgrader.Upgrade(w, r, nil)
    16  	if err != nil {
    17  		return
    18  	}
    19  
    20  	ts := terminalSession{wsConn: c}
    21  	_, _ = ts.reconnect()
    22  }
    23  
    24  func TestReconnect(t *testing.T) {
    25  
    26  	s := httptest.NewServer(http.HandlerFunc(reconnect))
    27  	defer s.Close()
    28  
    29  	u := "ws" + strings.TrimPrefix(s.URL, "http")
    30  
    31  	// Connect to the server
    32  	ws, _, err := websocket.DefaultDialer.Dial(u, nil)
    33  	assert.NoError(t, err)
    34  
    35  	defer ws.Close()
    36  
    37  	_, p, _ := ws.ReadMessage()
    38  
    39  	var message TerminalMessage
    40  
    41  	err = json.Unmarshal(p, &message)
    42  
    43  	assert.NoError(t, err)
    44  	assert.Equal(t, message.Data, ReconnectMessage)
    45  
    46  }