github.com/kubeshop/testkube@v1.17.23/pkg/api/v1/client/common_test.go (about)

     1  package client
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/json"
     6  	"errors"
     7  	"fmt"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  
    12  	"github.com/kubeshop/testkube/pkg/executor/output"
    13  )
    14  
    15  func TestTrimSSEChunk(t *testing.T) {
    16  
    17  	in := []byte(`data: {"type": "error","message": "some message"}\n\n`)
    18  	out := trimDataChunk(in)
    19  
    20  	assert.Equal(t, `{"type": "error","message": "some message"}`, string(out))
    21  }
    22  
    23  // TestStreamToLogsChannelOldErrorFormat parses old output error format and return type field
    24  func TestStreamToLogsChannelOldErrorFormat(t *testing.T) {
    25  	log := make(chan output.Output)
    26  	in := []byte(`data: {"type": "error", "message": "some message"}` + "\n\n")
    27  	buf := bytes.NewBuffer(in)
    28  
    29  	go StreamToLogsChannel(buf, log)
    30  	result := <-log
    31  	assert.Equal(t, output.Output{Type_: "error", Content: ""}, result)
    32  }
    33  
    34  // TestStreamToLogsChannelNewErrorFormat parses new output error format and return type and content fields
    35  func TestStreamToLogsChannelNewErrorFormat(t *testing.T) {
    36  	log := make(chan output.Output)
    37  	out, _ := json.Marshal(output.NewOutputError(errors.New("some message")))
    38  	in := []byte(fmt.Sprintf("%s\n", out))
    39  	buf := bytes.NewBuffer(in)
    40  
    41  	go StreamToLogsChannel(buf, log)
    42  	result := <-log
    43  	assert.Equal(t, "error", result.Type_)
    44  	assert.Equal(t, "some message", result.Content)
    45  }