Blame


1 dd0af5f7 2022-01-18 o package icinga
2 dd0af5f7 2022-01-18 o
3 dd0af5f7 2022-01-18 o import (
4 dd0af5f7 2022-01-18 o "encoding/json"
5 562d5c1e 2022-01-19 o "os"
6 dd0af5f7 2022-01-18 o "reflect"
7 dd0af5f7 2022-01-18 o "testing"
8 dd0af5f7 2022-01-18 o )
9 dd0af5f7 2022-01-18 o
10 dd0af5f7 2022-01-18 o func TestHostMarshal(t *testing.T) {
11 46ca0f68 2022-02-01 o b := []byte(`{"attrs":{"address":"192.0.2.1","address6":"2001:db8::","check_command":"dummy","display_name":"Example host","groups":["test"]}}`)
12 dd0af5f7 2022-01-18 o want := make(map[string]interface{})
13 46ca0f68 2022-02-01 o if err := json.Unmarshal(b, &want); err != nil {
14 dd0af5f7 2022-01-18 o t.Fatal(err)
15 dd0af5f7 2022-01-18 o }
16 dd0af5f7 2022-01-18 o
17 dd0af5f7 2022-01-18 o p, err := json.Marshal(Host{
18 dd0af5f7 2022-01-18 o Name: "example.com",
19 dd0af5f7 2022-01-18 o Address: "192.0.2.1",
20 dd0af5f7 2022-01-18 o Address6: "2001:db8::",
21 dd0af5f7 2022-01-18 o Groups: []string{"test"},
22 dd0af5f7 2022-01-18 o StateType: StateSoft,
23 dd0af5f7 2022-01-18 o CheckCommand: "dummy",
24 dd0af5f7 2022-01-18 o DisplayName: "Example host",
25 dd0af5f7 2022-01-18 o })
26 dd0af5f7 2022-01-18 o if err != nil {
27 dd0af5f7 2022-01-18 o t.Fatal(err)
28 dd0af5f7 2022-01-18 o }
29 46ca0f68 2022-02-01 o t.Log(string(p))
30 dd0af5f7 2022-01-18 o got := make(map[string]interface{})
31 dd0af5f7 2022-01-18 o if err := json.Unmarshal(p, &got); err != nil {
32 dd0af5f7 2022-01-18 o t.Fatal(err)
33 dd0af5f7 2022-01-18 o }
34 dd0af5f7 2022-01-18 o if !reflect.DeepEqual(want, got) {
35 dd0af5f7 2022-01-18 o t.Fail()
36 dd0af5f7 2022-01-18 o }
37 dd0af5f7 2022-01-18 o t.Log("want", want, "got", got)
38 dd0af5f7 2022-01-18 o }
39 562d5c1e 2022-01-19 o
40 562d5c1e 2022-01-19 o func TestHostUnmarshal(t *testing.T) {
41 562d5c1e 2022-01-19 o want := Host{
42 562d5c1e 2022-01-19 o Name: "example.com",
43 562d5c1e 2022-01-19 o Address: "",
44 562d5c1e 2022-01-19 o Groups: []string{"example"},
45 562d5c1e 2022-01-19 o State: HostDown,
46 562d5c1e 2022-01-19 o StateType: StateSoft,
47 562d5c1e 2022-01-19 o CheckCommand: "hostalive",
48 562d5c1e 2022-01-19 o DisplayName: "example.com",
49 562d5c1e 2022-01-19 o Acknowledgement: false,
50 562d5c1e 2022-01-19 o }
51 562d5c1e 2022-01-19 o f, err := os.Open("testdata/hosts.json")
52 562d5c1e 2022-01-19 o if err != nil {
53 562d5c1e 2022-01-19 o t.Fatal(err)
54 562d5c1e 2022-01-19 o }
55 562d5c1e 2022-01-19 o defer f.Close()
56 562d5c1e 2022-01-19 o resp, err := parseResponse(f)
57 562d5c1e 2022-01-19 o if err != nil {
58 562d5c1e 2022-01-19 o t.Fatal(err)
59 562d5c1e 2022-01-19 o }
60 562d5c1e 2022-01-19 o var got Host
61 562d5c1e 2022-01-19 o for _, r := range resp.Results {
62 562d5c1e 2022-01-19 o h := r.(Host)
63 562d5c1e 2022-01-19 o if h.Name == "example.com" {
64 562d5c1e 2022-01-19 o got = h
65 562d5c1e 2022-01-19 o break
66 562d5c1e 2022-01-19 o }
67 562d5c1e 2022-01-19 o }
68 562d5c1e 2022-01-19 o if !reflect.DeepEqual(want, got) {
69 562d5c1e 2022-01-19 o t.Fail()
70 562d5c1e 2022-01-19 o }
71 562d5c1e 2022-01-19 o t.Logf("want %+v, got %+v", want, got)
72 562d5c1e 2022-01-19 o }