All checks were successful
		
		
	
	test / test (push) Successful in 42s
				
			## Pull Request template Please, go through these steps before clicking submit on this PR. 1. Give a descriptive title to your PR. 2. Provide a description of your changes. 3. Make sure you have some relevant tests. 4. Put `closes #XXXX` in your comment to auto-close the issue that your PR fixes (if applicable). **PLEASE REMOVE THIS TEMPLATE BEFORE SUBMITTING** Reviewed-on: #369 Co-authored-by: Evstigneev Denis <danteevstigneev@yandex.ru> Co-committed-by: Evstigneev Denis <danteevstigneev@yandex.ru>
		
			
				
	
	
		
			122 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package errors
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 	"net/http"
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func TestIsRetrayable(t *testing.T) {
 | |
| 	err := fmt.Errorf("ORA-")
 | |
| 	if !IsRetryable(err, RetrayableOracleErrors...) {
 | |
| 		t.Fatalf("IsRetrayable not works")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestMarshalJSON(t *testing.T) {
 | |
| 	e := InternalServerError("id", "err: %v", fmt.Errorf("err: %v", `xxx: "UNIX_TIMESTAMP": invalid identifier`))
 | |
| 	_, err := json.Marshal(e)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestEmpty(t *testing.T) {
 | |
| 	msg := "test"
 | |
| 	var err *Error
 | |
| 	err = FromError(errors.New(msg))
 | |
| 	if err.Detail != msg {
 | |
| 		t.Fatalf("invalid error %v", err)
 | |
| 	}
 | |
| 	err = FromError(fmt.Errorf(`{"id":"","detail":"%s","status":"%s","code":0}`, msg, msg))
 | |
| 	if err.Detail != msg || err.Status != msg {
 | |
| 		t.Fatalf("invalid error %#+v", err)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestFromError(t *testing.T) {
 | |
| 	err := NotFound("go.micro.test", "%s", "example")
 | |
| 	merr := FromError(err)
 | |
| 	if merr.ID != "go.micro.test" || merr.Code != 404 {
 | |
| 		t.Fatalf("invalid conversation %v != %v", err, merr)
 | |
| 	}
 | |
| 	err = errors.New(err.Error())
 | |
| 	merr = FromError(err)
 | |
| 	if merr.ID != "go.micro.test" || merr.Code != 404 {
 | |
| 		t.Fatalf("invalid conversation %v != %v", err, merr)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestEqual(t *testing.T) {
 | |
| 	err1 := NotFound("myid1", "msg1")
 | |
| 	err2 := NotFound("myid2", "msg2")
 | |
| 
 | |
| 	if !Equal(err1, err2) {
 | |
| 		t.Fatal("errors must be equal")
 | |
| 	}
 | |
| 
 | |
| 	err3 := errors.New("my test err")
 | |
| 	if Equal(err1, err3) {
 | |
| 		t.Fatal("errors must be not equal")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestErrors(t *testing.T) {
 | |
| 	testData := []*Error{
 | |
| 		{
 | |
| 			ID:     "test",
 | |
| 			Code:   500,
 | |
| 			Detail: "Internal server error",
 | |
| 			Status: http.StatusText(500),
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, e := range testData {
 | |
| 		ne := New(e.ID, e.Detail, e.Code)
 | |
| 
 | |
| 		if e.Error() != ne.Error() {
 | |
| 			t.Fatalf("Expected %s got %s", e.Error(), ne.Error())
 | |
| 		}
 | |
| 
 | |
| 		pe := Parse(ne.Error())
 | |
| 
 | |
| 		if pe == nil {
 | |
| 			t.Fatalf("Expected error got nil %v", pe)
 | |
| 		}
 | |
| 
 | |
| 		if pe.ID != e.ID {
 | |
| 			t.Fatalf("Expected %s got %s", e.ID, pe.ID)
 | |
| 		}
 | |
| 
 | |
| 		if pe.Detail != e.Detail {
 | |
| 			t.Fatalf("Expected %s got %s", e.Detail, pe.Detail)
 | |
| 		}
 | |
| 
 | |
| 		if pe.Code != e.Code {
 | |
| 			t.Fatalf("Expected %d got %d", e.Code, pe.Code)
 | |
| 		}
 | |
| 
 | |
| 		if pe.Status != e.Status {
 | |
| 			t.Fatalf("Expected %s got %s", e.Status, pe.Status)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestCodeIn(t *testing.T) {
 | |
| 	err := InternalServerError("id", "%s", "msg")
 | |
| 
 | |
| 	if ok := CodeIn(err, 400, 500); !ok {
 | |
| 		t.Fatalf("CodeIn not works: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	if ok := CodeIn(err.(*Error).Code, 500); !ok {
 | |
| 		t.Fatalf("CodeIn not works: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	if ok := CodeIn(err, 100); ok {
 | |
| 		t.Fatalf("CodeIn not works: %v", err)
 | |
| 	}
 | |
| }
 |