...

Source file src/github.com/letsencrypt/boulder/sa/type-converter_test.go

Documentation: github.com/letsencrypt/boulder/sa

     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