...

Source file src/edge-infra.dev/pkg/edge/api/apierror/error_test.go

Documentation: edge-infra.dev/pkg/edge/api/apierror

     1  package apierror
     2  
     3  import (
     4  	"context"
     5  	"encoding/json"
     6  	"errors"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestNew(t *testing.T) {
    13  	err := errors.New("internal server error")
    14  	genericErr := New(err.Error())
    15  	assert.NotNil(t, genericErr)
    16  	assert.Equal(t, err.Error(), genericErr.Message)
    17  }
    18  
    19  func TestNewFromError(t *testing.T) {
    20  	err := errors.New("internal server error")
    21  	genericErr := Wrap(err)
    22  	assert.NotNil(t, genericErr)
    23  	assert.Equal(t, err.Error(), genericErr.Message)
    24  }
    25  
    26  func TestSetPath(t *testing.T) {
    27  	type key string
    28  	const fieldInputCtx key = "path_context"
    29  	graphCtx := context.Background()
    30  	graphCtx = context.WithValue(graphCtx, fieldInputCtx, "login")
    31  	genericErr := New("").SetPath(graphCtx)
    32  	assert.NotNil(t, genericErr)
    33  }
    34  
    35  func TestSetMessage(t *testing.T) {
    36  	genericErr := New("").SetMessage("invalid credentials")
    37  	assert.NotNil(t, genericErr)
    38  	assert.Equal(t, genericErr.Message, "invalid credentials")
    39  }
    40  
    41  func TestSetOperationID(t *testing.T) {
    42  	genericErr := New("").SetOperationID(context.Background())
    43  	assert.NotNil(t, genericErr)
    44  	assert.NotNil(t, genericErr.OperationID)
    45  }
    46  
    47  func TestSetSetVersion(t *testing.T) {
    48  	genericErr := New("").SetVersion("v1")
    49  	assert.NotNil(t, genericErr)
    50  	assert.NotNil(t, genericErr.Version, "v1")
    51  }
    52  
    53  func TestSetGenericErrorExtension(t *testing.T) {
    54  	urlExtension := map[string]interface{}{
    55  		"url": "https://ncr.com",
    56  	}
    57  	genericErr := New("").SetGenericErrorExtension(urlExtension)
    58  	assert.Equal(t, len(genericErr.Ext), 1)
    59  }
    60  
    61  func TestAddGenericErrorExtension(t *testing.T) {
    62  	urlExtension := map[string]interface{}{
    63  		"url": "https://ncr.com",
    64  	}
    65  	genericErr1 := New("").SetGenericErrorExtension(urlExtension)
    66  	assert.Equal(t, len(genericErr1.Ext), 1)
    67  	genericErr2 := genericErr1.AddGenericErrorExtension("path", "/login")
    68  	assert.Equal(t, len(genericErr2.Ext), 2)
    69  }
    70  
    71  func TestMapGenericExtensions(t *testing.T) {
    72  	urlExtensions := map[string]interface{}{
    73  		"url":  "https://ncr.com",
    74  		"path": "/login",
    75  	}
    76  	genericErr := New("").SetGenericErrorExtension(urlExtensions)
    77  	assert.Equal(t, len(genericErr.Ext), 2)
    78  	exts := genericErr.Extensions()
    79  	assert.Equal(t, exts["url"], "https://ncr.com")
    80  	assert.Equal(t, exts["path"], "/login")
    81  }
    82  
    83  func TestError(t *testing.T) {
    84  	urlExtensions := map[string]interface{}{
    85  		"url":  "https://ncr.com",
    86  		"path": "/login",
    87  	}
    88  	genericErr := New("invalid credentials").SetVersion("v1").SetGenericErrorExtension(urlExtensions)
    89  	assert.Equal(t, len(genericErr.Ext), 2)
    90  	genericErrString, err := json.Marshal(genericErr)
    91  	assert.NoError(t, err)
    92  	assert.Equal(t, string(genericErrString), `{"message":"invalid credentials","operationID":"","version":"v1","Extensions":{"path":"/login","url":"https://ncr.com"}}`)
    93  }
    94  

View as plain text