1 package sa
2
3 import (
4 "encoding/json"
5 "testing"
6
7 "github.com/letsencrypt/boulder/core"
8 "github.com/letsencrypt/boulder/identifier"
9 "github.com/letsencrypt/boulder/test"
10
11 "gopkg.in/go-jose/go-jose.v2"
12 )
13
14 const JWK1JSON = `{
15 "kty": "RSA",
16 "n": "vuc785P8lBj3fUxyZchF_uZw6WtbxcorqgTyq-qapF5lrO1U82Tp93rpXlmctj6fyFHBVVB5aXnUHJ7LZeVPod7Wnfl8p5OyhlHQHC8BnzdzCqCMKmWZNX5DtETDId0qzU7dPzh0LP0idt5buU7L9QNaabChw3nnaL47iu_1Di5Wp264p2TwACeedv2hfRDjDlJmaQXuS8Rtv9GnRWyC9JBu7XmGvGDziumnJH7Hyzh3VNu-kSPQD3vuAFgMZS6uUzOztCkT0fpOalZI6hqxtWLvXUMj-crXrn-Maavz8qRhpAyp5kcYk3jiHGgQIi7QSK2JIdRJ8APyX9HlmTN5AQ",
17 "e": "AQAB"
18 }`
19
20 func TestAcmeIdentifier(t *testing.T) {
21 tc := BoulderTypeConverter{}
22
23 ai := identifier.ACMEIdentifier{Type: "data1", Value: "data2"}
24 out := identifier.ACMEIdentifier{}
25
26 marshaledI, err := tc.ToDb(ai)
27 test.AssertNotError(t, err, "Could not ToDb")
28
29 scanner, ok := tc.FromDb(&out)
30 test.Assert(t, ok, "FromDb failed")
31 if !ok {
32 t.FailNow()
33 return
34 }
35
36 marshaled := marshaledI.(string)
37 err = scanner.Binder(&marshaled, &out)
38 test.AssertNotError(t, err, "failed to scanner.Binder")
39 test.AssertMarshaledEquals(t, ai, out)
40 }
41
42 func TestAcmeIdentifierBadJSON(t *testing.T) {
43 badJSON := `{`
44 tc := BoulderTypeConverter{}
45 out := identifier.ACMEIdentifier{}
46 scanner, _ := tc.FromDb(&out)
47 err := scanner.Binder(&badJSON, &out)
48 test.AssertError(t, err, "expected error from scanner.Binder")
49 var badJSONErr errBadJSON
50 test.AssertErrorWraps(t, err, &badJSONErr)
51 test.AssertEquals(t, string(badJSONErr.json), badJSON)
52 }
53
54 func TestJSONWebKey(t *testing.T) {
55 tc := BoulderTypeConverter{}
56
57 var jwk, out jose.JSONWebKey
58 err := json.Unmarshal([]byte(JWK1JSON), &jwk)
59 if err != nil {
60 t.Fatal(err)
61 }
62
63 marshaledI, err := tc.ToDb(jwk)
64 test.AssertNotError(t, err, "Could not ToDb")
65
66 scanner, ok := tc.FromDb(&out)
67 test.Assert(t, ok, "FromDb failed")
68 if !ok {
69 t.FailNow()
70 return
71 }
72
73 marshaled := marshaledI.(string)
74 err = scanner.Binder(&marshaled, &out)
75 test.AssertNotError(t, err, "failed to scanner.Binder")
76 test.AssertMarshaledEquals(t, jwk, out)
77 }
78
79 func TestJSONWebKeyBadJSON(t *testing.T) {
80 badJSON := `{`
81 tc := BoulderTypeConverter{}
82 out := jose.JSONWebKey{}
83 scanner, _ := tc.FromDb(&out)
84 err := scanner.Binder(&badJSON, &out)
85 test.AssertError(t, err, "expected error from scanner.Binder")
86 var badJSONErr errBadJSON
87 test.AssertErrorWraps(t, err, &badJSONErr)
88 test.AssertEquals(t, string(badJSONErr.json), badJSON)
89 }
90
91 func TestAcmeStatus(t *testing.T) {
92 tc := BoulderTypeConverter{}
93
94 var as, out core.AcmeStatus
95 as = "core.AcmeStatus"
96
97 marshaledI, err := tc.ToDb(as)
98 test.AssertNotError(t, err, "Could not ToDb")
99
100 scanner, ok := tc.FromDb(&out)
101 test.Assert(t, ok, "FromDb failed")
102 if !ok {
103 t.FailNow()
104 return
105 }
106
107 marshaled := marshaledI.(string)
108 err = scanner.Binder(&marshaled, &out)
109 test.AssertNotError(t, err, "failed to scanner.Binder")
110 test.AssertMarshaledEquals(t, as, out)
111 }
112
113 func TestOCSPStatus(t *testing.T) {
114 tc := BoulderTypeConverter{}
115
116 var os, out core.OCSPStatus
117 os = "core.OCSPStatus"
118
119 marshaledI, err := tc.ToDb(os)
120 test.AssertNotError(t, err, "Could not ToDb")
121
122 scanner, ok := tc.FromDb(&out)
123 test.Assert(t, ok, "FromDb failed")
124 if !ok {
125 t.FailNow()
126 return
127 }
128
129 marshaled := marshaledI.(string)
130 err = scanner.Binder(&marshaled, &out)
131 test.AssertNotError(t, err, "failed to scanner.Binder")
132 test.AssertMarshaledEquals(t, os, out)
133 }
134
135 func TestStringSlice(t *testing.T) {
136 tc := BoulderTypeConverter{}
137 var au, out []string
138
139 marshaledI, err := tc.ToDb(au)
140 test.AssertNotError(t, err, "Could not ToDb")
141
142 scanner, ok := tc.FromDb(&out)
143 test.Assert(t, ok, "FromDb failed")
144 if !ok {
145 t.FailNow()
146 return
147 }
148
149 marshaled := marshaledI.(string)
150 err = scanner.Binder(&marshaled, &out)
151 test.AssertNotError(t, err, "failed to scanner.Binder")
152 test.AssertMarshaledEquals(t, au, out)
153 }
154
View as plain text