Blame


1 ae81184d 2022-01-11 o package icinga
2 ae81184d 2022-01-11 o
3 ae81184d 2022-01-11 o import (
4 ae81184d 2022-01-11 o "crypto/tls"
5 ae81184d 2022-01-11 o "encoding/json"
6 ae81184d 2022-01-11 o "errors"
7 ae81184d 2022-01-11 o "net/http"
8 ae81184d 2022-01-11 o "os"
9 ae81184d 2022-01-11 o "reflect"
10 ae81184d 2022-01-11 o "testing"
11 ae81184d 2022-01-11 o )
12 ae81184d 2022-01-11 o
13 5105405e 2022-01-18 o func newTestClient() (*Client, error) {
14 5105405e 2022-01-18 o tp := http.DefaultTransport.(*http.Transport)
15 5105405e 2022-01-18 o tp.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
16 5105405e 2022-01-18 o c := http.DefaultClient
17 5105405e 2022-01-18 o c.Transport = tp
18 5105405e 2022-01-18 o return Dial("127.0.0.1:5665", "root", "icinga", c)
19 5105405e 2022-01-18 o }
20 5105405e 2022-01-18 o
21 ae81184d 2022-01-11 o func TestUser(t *testing.T) {
22 ae81184d 2022-01-11 o want := User{Name: "test", Email: "test@example.com", Groups: []string{}}
23 ae81184d 2022-01-11 o f, err := os.Open("testdata/users.json")
24 ae81184d 2022-01-11 o if err != nil {
25 ae81184d 2022-01-11 o t.Fatal(err)
26 ae81184d 2022-01-11 o }
27 ae81184d 2022-01-11 o defer f.Close()
28 ae81184d 2022-01-11 o resp, err := parseResponse(f)
29 ae81184d 2022-01-11 o if err != nil {
30 ae81184d 2022-01-11 o t.Fatal(err)
31 ae81184d 2022-01-11 o }
32 ae81184d 2022-01-11 o obj, err := objectFromLookup(resp)
33 ae81184d 2022-01-11 o if err != nil {
34 ae81184d 2022-01-11 o t.Fatal(err)
35 ae81184d 2022-01-11 o }
36 ae81184d 2022-01-11 o got, ok := obj.(User)
37 ae81184d 2022-01-11 o if !ok {
38 ae81184d 2022-01-11 o t.Fatalf("want %T, got %T", want, got)
39 ae81184d 2022-01-11 o }
40 ae81184d 2022-01-11 o if !reflect.DeepEqual(want, got) {
41 ae81184d 2022-01-11 o t.Errorf("want: %+v, got %+v", want, got)
42 ae81184d 2022-01-11 o }
43 ae81184d 2022-01-11 o }
44 ae81184d 2022-01-11 o
45 ae81184d 2022-01-11 o func TestUserMarshal(t *testing.T) {
46 ae81184d 2022-01-11 o user := &User{Name: "test", Email: "test@example.com", Groups: []string{}}
47 ae81184d 2022-01-11 o want := `{"attrs":{"email":"test@example.com"}}`
48 ae81184d 2022-01-11 o got, err := json.Marshal(user)
49 ae81184d 2022-01-11 o if err != nil {
50 ae81184d 2022-01-11 o t.Fatal(err)
51 ae81184d 2022-01-11 o }
52 ae81184d 2022-01-11 o if string(got) != want {
53 ae81184d 2022-01-11 o t.Fail()
54 ae81184d 2022-01-11 o }
55 ae81184d 2022-01-11 o t.Logf("want %s, got %s", want, got)
56 ae81184d 2022-01-11 o }
57 ae81184d 2022-01-11 o
58 ae81184d 2022-01-11 o func TestUserRoundTrip(t *testing.T) {
59 5105405e 2022-01-18 o client, err := newTestClient()
60 ae81184d 2022-01-11 o if err != nil {
61 ae81184d 2022-01-11 o t.Skipf("no local test icinga? got: %v", err)
62 ae81184d 2022-01-11 o }
63 ae81184d 2022-01-11 o want := User{Name: "olly", Email: "olly@example.com", Groups: []string{}}
64 ae81184d 2022-01-11 o if err := client.CreateUser(want); err != nil && !errors.Is(err, ErrExist) {
65 ae81184d 2022-01-11 o t.Fatal(err)
66 ae81184d 2022-01-11 o }
67 ae81184d 2022-01-11 o defer func() {
68 ae81184d 2022-01-11 o if err := client.DeleteUser(want.Name); err != nil {
69 ae81184d 2022-01-11 o t.Error(err)
70 ae81184d 2022-01-11 o }
71 ae81184d 2022-01-11 o }()
72 ae81184d 2022-01-11 o got, err := client.LookupUser(want.Name)
73 ae81184d 2022-01-11 o if err != nil {
74 ae81184d 2022-01-11 o t.Fatal(err)
75 ae81184d 2022-01-11 o }
76 ae81184d 2022-01-11 o if !reflect.DeepEqual(want, got) {
77 ae81184d 2022-01-11 o t.Errorf("want %+v, got %+v", want, got)
78 ae81184d 2022-01-11 o }
79 ae81184d 2022-01-11 o }