1package api
2
3import (
4	"testing"
5
6	"github.com/go-test/deep"
7)
8
9func TestRenewer_NewRenewer(t *testing.T) {
10	t.Parallel()
11
12	client, err := NewClient(DefaultConfig())
13	if err != nil {
14		t.Fatal(err)
15	}
16
17	cases := []struct {
18		name string
19		i    *RenewerInput
20		e    *Renewer
21		err  bool
22	}{
23		{
24			"nil",
25			nil,
26			nil,
27			true,
28		},
29		{
30			"missing_secret",
31			&RenewerInput{
32				Secret: nil,
33			},
34			nil,
35			true,
36		},
37		{
38			"default_grace",
39			&RenewerInput{
40				Secret: &Secret{},
41			},
42			&Renewer{
43				secret: &Secret{},
44			},
45			false,
46		},
47	}
48
49	for _, tc := range cases {
50		t.Run(tc.name, func(t *testing.T) {
51			v, err := client.NewRenewer(tc.i)
52			if (err != nil) != tc.err {
53				t.Fatal(err)
54			}
55
56			if v == nil {
57				return
58			}
59
60			// Zero-out channels because reflect
61			v.client = nil
62			v.random = nil
63			v.doneCh = nil
64			v.renewCh = nil
65			v.stopCh = nil
66
67			if diff := deep.Equal(tc.e, v); diff != nil {
68				t.Error(diff)
69			}
70		})
71	}
72}
73