File: error_test.go

package info (click to toggle)
golang-github-hetznercloud-hcloud-go 2.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,072 kB
  • sloc: sh: 5; makefile: 2
file content (54 lines) | stat: -rw-r--r-- 1,359 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package schema

import (
	"encoding/json"
	"testing"
)

func TestError(t *testing.T) {
	t.Run("UnmarshalJSON", func(t *testing.T) {
		data := []byte(`{
			"code": "invalid_input",
			"message": "invalid input",
			"details": {
				"fields": [
					{
						"name": "broken_field",
						"messages": ["is required"]
					}
				]
			}
		}`)

		e := &Error{}
		err := json.Unmarshal(data, e)
		if err != nil {
			t.Fatalf("unexpected error: %v", err)
		}
		if e.Code != "invalid_input" {
			t.Errorf("unexpected Code: %v", e.Code)
		}
		if e.Message != "invalid input" {
			t.Errorf("unexpected Message: %v", e.Message)
		}
		if e.Details == nil {
			t.Fatalf("unexpected Details: %v", e.Details)
		}
		d, ok := e.Details.(ErrorDetailsInvalidInput)
		if !ok {
			t.Fatalf("unexpected Details type (should be ErrorDetailsInvalidInput): %v", e.Details)
		}
		if len(d.Fields) != 1 {
			t.Fatalf("unexpected Details.Fields length (should be 1): %v", d.Fields)
		}
		if d.Fields[0].Name != "broken_field" {
			t.Errorf("unexpected Details.Fields[0].Name: %v", d.Fields[0].Name)
		}
		if len(d.Fields[0].Messages) != 1 {
			t.Fatalf("unexpected Details.Fields[0].Messages length (should be 1): %v", d.Fields[0].Messages)
		}
		if d.Fields[0].Messages[0] != "is required" {
			t.Errorf("unexpected Details.Fields[0].Messages[0]: %v", d.Fields[0].Messages[0])
		}
	})
}