github.com/micro/go-micro/v2@v2.9.1/errors/errors_test.go (about) 1 package errors 2 3 import ( 4 er "errors" 5 "net/http" 6 "testing" 7 ) 8 9 func TestFromError(t *testing.T) { 10 err := NotFound("go.micro.test", "%s", "example") 11 merr := FromError(err) 12 if merr.Id != "go.micro.test" || merr.Code != 404 { 13 t.Fatalf("invalid conversation %v != %v", err, merr) 14 } 15 err = er.New(err.Error()) 16 merr = FromError(err) 17 if merr.Id != "go.micro.test" || merr.Code != 404 { 18 t.Fatalf("invalid conversation %v != %v", err, merr) 19 } 20 21 } 22 23 func TestEqual(t *testing.T) { 24 err1 := NotFound("myid1", "msg1") 25 err2 := NotFound("myid2", "msg2") 26 27 if !Equal(err1, err2) { 28 t.Fatal("errors must be equal") 29 } 30 31 err3 := er.New("my test err") 32 if Equal(err1, err3) { 33 t.Fatal("errors must be not equal") 34 } 35 36 } 37 38 func TestErrors(t *testing.T) { 39 testData := []*Error{ 40 { 41 Id: "test", 42 Code: 500, 43 Detail: "Internal server error", 44 Status: http.StatusText(500), 45 }, 46 } 47 48 for _, e := range testData { 49 ne := New(e.Id, e.Detail, e.Code) 50 51 if e.Error() != ne.Error() { 52 t.Fatalf("Expected %s got %s", e.Error(), ne.Error()) 53 } 54 55 pe := Parse(ne.Error()) 56 57 if pe == nil { 58 t.Fatalf("Expected error got nil %v", pe) 59 } 60 61 if pe.Id != e.Id { 62 t.Fatalf("Expected %s got %s", e.Id, pe.Id) 63 } 64 65 if pe.Detail != e.Detail { 66 t.Fatalf("Expected %s got %s", e.Detail, pe.Detail) 67 } 68 69 if pe.Code != e.Code { 70 t.Fatalf("Expected %d got %d", e.Code, pe.Code) 71 } 72 73 if pe.Status != e.Status { 74 t.Fatalf("Expected %s got %s", e.Status, pe.Status) 75 } 76 } 77 }