7 var signedData = []struct {
15 `-----BEGIN PGP SIGNED MESSAGE-----
19 -----BEGIN PGP SIGNATURE-----
21 `, true, "SHA1", "body", "-----BEGIN PGP SIGNATURE-----\nsig\n"},
23 `-----BEGIN PGP SIGNED MESSAGE-----
28 -----BEGIN PGP SIGNATURE-----
30 `, false, "", "body", "-----BEGIN PGP SIGNATURE-----\nsig\n"},
33 func TestSigned(t *testing.T) {
34 for _, x := range signedData {
35 c, err := ParseSigned([]byte(x.text))
37 t.Errorf("parsing %q failed: %s\n", x.text, err)
40 if string(c.Body) != x.body {
41 t.Errorf("expected: %q, got %q\n", x.body, c.Body)
43 if string(c.Signature) != x.sig {
44 t.Errorf("expected: %q, got %q\n", x.sig, c.Signature)
47 for _, x := range signedData {
51 c := &Signed{x.hash, []byte(x.body), []byte(x.sig)}
52 s, err := FormatSigned(c)
54 t.Errorf("formating %#v failed: %s\n", c, err)
57 if string(s) != x.text {
58 t.Errorf("expected: %q, got %q\n", x.text, s)
63 var docData = []struct {
71 `Content-Type: text/vnd.epoint.draft; charset=utf-8
76 `, true, "Draft", []string{"K1", "K2-Foo", "K3"}, []string{"v1", "v 2", "v 3"}},
78 `Content-Type: text/vnd.epoint.debit; charset=utf-8
83 `, true, "DebitCert", []string{"K1", "K2-Foo", "K3"}, []string{" v1", "v 2", "v 3"}},
85 `Content-Type: text/vnd.epoint.credit; charset=utf-8
91 `, false, "CreditCert", []string{"K1", "K2-Foo", "K3"}, []string{"v1", "v 2", "v 3"}},
94 func TestDocument(t *testing.T) {
95 for _, x := range docData {
96 doc, err := ParseDocument([]byte(x.text))
98 t.Errorf("parsing %q failed: %s\n", x.text, err)
101 if string(doc.Type) != x.t {
102 t.Errorf("expected: %q, got %q\n", x.t, doc.Type)
104 if len(doc.Fields) != len(x.k) {
105 t.Errorf("expected: %d fields, got %d\n", len(x.k), len(doc.Fields))
107 for i, k := range x.k {
108 if doc.Fields[k] != x.v[i] {
109 t.Errorf("value of %s expected to be %s, got %s\n", k, x.v[i], doc.Fields[k])
113 for _, x := range docData {
119 doc.Fields = make(map[string]string)
121 for i, k := range x.k {
122 doc.Fields[k] = x.v[i]
124 s, err := FormatDocument(doc)
126 t.Errorf("formating %#v failed: %s\n", doc, err)
129 if string(s) != x.text {
130 t.Errorf("expected: %q, got %q\n", x.text, s)
135 const draftBody = `Content-Type: text/vnd.epoint.draft; charset=utf-8
137 Drawer: 000000000000000000000000000000000000000A
138 Beneficiary: 000000000000000000000000000000000000000B
140 Denomination: half euro
141 Issuer: 000000000000000000000000000000000000000D
142 Authorized-By: 000000000000000000000000000000000000000C
143 Maturity-Date: 2011-11-13T12:20:35Z
144 Expiry-Date: 2011-12-27T09:18:46Z
149 func TestDraft(t *testing.T) {
150 doc, err := ParseDocument([]byte(draftBody))
152 t.Errorf("ParseDocument failed: %s\n", err)
155 iv, err := ParseStruct(doc)
157 t.Errorf("ParseStruct %v failed: %s\n", doc, err)
162 t.Errorf("expected *Draft got %#v\n", iv)
165 doc, err = FormatStruct(d)
167 t.Errorf("format %v draft failed: %s\n", d, err)
170 s, err := FormatDocument(doc)
172 t.Errorf("format %v doc failed: %s\n", doc, err)
175 if string(s) != draftBody {
176 t.Errorf("parsed %#v\nexpected: %s\ngot: %s\n", d, draftBody, s)
180 const debitBody = `Content-Type: text/vnd.epoint.debit; charset=utf-8
182 Holder: 0000000000000000000000000000000000000009
185 Denomination: half euro
186 Issuer: 000000000000000000000000000000000000000B
187 Date: 2011-11-13T12:20:35Z
188 Authorized-By: 000000000000000000000000000000000000000A
191 Last-Credit-Serial: 12
192 Last-Cert: 000000000000000000000000000000000000000C
193 References: 000000000000000000000000000000000000000C
194 000000000000000000000000000000000000000F
196 Draft: 000000000000000000000000000000000000000D
197 Beneficiary: 000000000000000000000000000000000000000E
200 func TestCert(t *testing.T) {
201 doc, err := ParseDocument([]byte(debitBody))
203 t.Errorf("ParseDocument failed: %s\n", err)
206 iv, err := ParseStruct(doc)
208 t.Errorf("ParseStruct %v failed: %s\n", doc, err)
211 d, ok := iv.(*DebitCert)
213 t.Errorf("expected *DebitCert got %#v\n", iv)
216 doc, err = FormatStruct(d)
218 t.Errorf("format %v draft failed: %s\n", d, err)
221 s, err := FormatDocument(doc)
223 t.Errorf("format %v doc failed: %s\n", doc, err)
226 if string(s) != debitBody {
227 t.Errorf("parsed %#v\nexpected: %s\ngot: %s\n", d, debitBody, s)