commit - 76669f9b1f06b7299f2261667b4b21db38db7cae
commit + ae81184d0c6aa8be7d10adac10e675d9096a3a3b
blob - /dev/null
blob + 24d38a09aaba3202d282123dd02b26cce1d5d930 (mode 644)
--- /dev/null
+++ testdata/users.json
+{
+ "results": [
+ {
+ "attrs": {
+ "__name": "test",
+ "active": true,
+ "display_name": "test",
+ "email": "test@example.com",
+ "enable_notifications": true,
+ "groups": [],
+ "ha_mode": 0,
+ "last_notification": 0,
+ "name": "test",
+ "original_attributes": null,
+ "package": "_etc",
+ "pager": "",
+ "paused": false,
+ "period": "",
+ "source_location": {
+ "first_column": 1,
+ "first_line": 56,
+ "last_column": 18,
+ "last_line": 56,
+ "path": "/etc/icinga2/conf.d/ye.conf"
+ },
+ "states": null,
+ "templates": [
+ "test"
+ ],
+ "type": "User",
+ "types": null,
+ "vars": null,
+ "version": 0,
+ "zone": ""
+ },
+ "joins": {},
+ "meta": {},
+ "name": "test",
+ "type": "User"
+ }
+ ]
+}
blob - /dev/null
blob + a6b02927619bc505fe49e38d85a142d6b7705459 (mode 644)
--- /dev/null
+++ user_test.go
+package icinga
+
+import (
+ "crypto/tls"
+ "encoding/json"
+ "errors"
+ "net/http"
+ "os"
+ "reflect"
+ "testing"
+)
+
+func TestUser(t *testing.T) {
+ want := User{Name: "test", Email: "test@example.com", Groups: []string{}}
+ f, err := os.Open("testdata/users.json")
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer f.Close()
+ resp, err := parseResponse(f)
+ if err != nil {
+ t.Fatal(err)
+ }
+ obj, err := objectFromLookup(resp)
+ if err != nil {
+ t.Fatal(err)
+ }
+ got, ok := obj.(User)
+ if !ok {
+ t.Fatalf("want %T, got %T", want, got)
+ }
+ if !reflect.DeepEqual(want, got) {
+ t.Errorf("want: %+v, got %+v", want, got)
+ }
+}
+
+func TestUserMarshal(t *testing.T) {
+ user := &User{Name: "test", Email: "test@example.com", Groups: []string{}}
+ want := `{"attrs":{"email":"test@example.com"}}`
+ got, err := json.Marshal(user)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if string(got) != want {
+ t.Fail()
+ }
+ t.Logf("want %s, got %s", want, got)
+}
+
+func TestUserRoundTrip(t *testing.T) {
+ tp := http.DefaultTransport.(*http.Transport)
+ tp.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
+ c := http.DefaultClient
+ c.Transport = tp
+ client, err := Dial("127.0.0.1:5665", "root", "8eec5ede1673b757", c)
+ if err != nil {
+ t.Skipf("no local test icinga? got: %v", err)
+ }
+
+ want := User{Name: "olly", Email: "olly@example.com", Groups: []string{}}
+ if err := client.CreateUser(want); err != nil && !errors.Is(err, ErrExist) {
+ t.Fatal(err)
+ }
+ defer func() {
+ if err := client.DeleteUser(want.Name); err != nil {
+ t.Error(err)
+ }
+ }()
+ got, err := client.LookupUser(want.Name)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !reflect.DeepEqual(want, got) {
+ t.Errorf("want %+v, got %+v", want, got)
+ }
+}