func TestKMS(t *testing.T) { mockKMS := &mocks.KMSAPI{} defer mockKMS.AssertExpectations(t) kmsSvc = mockKMS isMocked = true encryptOutput := &kms.EncryptOutput{} decryptOutput := &kms.DecryptOutput{} mockKMS.On("Encrypt", mock.AnythingOfType("*kms.EncryptInput")).Return(encryptOutput, nil).Run(func(args mock.Arguments) { encryptOutput.CiphertextBlob = args.Get(0).(*kms.EncryptInput).Plaintext }) mockKMS.On("Decrypt", mock.AnythingOfType("*kms.DecryptInput")).Return(decryptOutput, nil).Run(func(args mock.Arguments) { decryptOutput.Plaintext = args.Get(0).(*kms.DecryptInput).CiphertextBlob }) k := MasterKey{Arn: "arn:aws:kms:us-east-1:927034868273:key/e9fc75db-05e9-44c1-9c35-633922bac347", Role: "", EncryptedKey: ""} f := func(x []byte) bool { err := k.Encrypt(x) if err != nil { fmt.Println(err) } v, err := k.Decrypt() if err != nil { fmt.Println(err) } return bytes.Equal(v, x) } config := quick.Config{} if testing.Short() { config.MaxCount = 10 } if err := quick.Check(f, &config); err != nil { t.Error(err) } }
func TestMetricJSONRoundTrip(t *testing.T) { rand := rand.New(rand.NewSource(0)) f := func(name, prog string, kind Kind, keys []string, val, ti, tns int64) bool { m := NewMetric(name, prog, kind, keys...) var labels []string for _ = range keys { if l, ok := quick.Value(reflect.TypeOf(name), rand); ok { labels = append(labels, l.String()) } else { t.Errorf("failed to create value for labels") break } } d, _ := m.GetDatum(labels...) d.Set(val, timeGenerator(rand)) j, e := json.Marshal(m) if e != nil { t.Errorf("json.Marshal failed: %s\n", e) return false } r := &Metric{} e = json.Unmarshal(j, &r) if e != nil { t.Errorf("json.Unmarshal failed: %s\n", e) return false } // pretty.Compare uses the opposite order to xUnit for comparisons. diff := pretty.Compare(r, m) if len(diff) > 0 { t.Errorf("Round trip wasn't stable:\n%s", diff) return false } return true } q := quick.Config{MaxCount: 100000} if testing.Short() { q.MaxCount = 1000 } if err := quick.Check(f, nil); err != nil { t.Error(err) } }
func TestEncryptPKCS1v15(t *testing.T) { random := rand.Reader k := (rsaPrivateKey.N.BitLen() + 7) / 8 tryEncryptDecrypt := func(in []byte, blind bool) bool { if len(in) > k-11 { in = in[0 : k-11] } ciphertext, err := EncryptPKCS1v15(random, &rsaPrivateKey.PublicKey, in) if err != nil { t.Errorf("error encrypting: %s", err) return false } var rand io.Reader if !blind { rand = nil } else { rand = random } plaintext, err := DecryptPKCS1v15(rand, rsaPrivateKey, ciphertext) if err != nil { t.Errorf("error decrypting: %s", err) return false } if !bytes.Equal(plaintext, in) { t.Errorf("output mismatch: %#v %#v", plaintext, in) return false } return true } config := new(quick.Config) if testing.Short() { config.MaxCount = 10 } quick.Check(tryEncryptDecrypt, config) }
func TestKMS(t *testing.T) { // TODO: make this not terrible and mock KMS with a reverseable operation on the key, or something. Good luck running the tests on a machine that's not mine! mockKMS := &MockKMSAPI{} defer mockKMS.AssertExpectations(t) kmsSvc = mockKMS encryptOutput := &kms.EncryptOutput{} decryptOutput := &kms.DecryptOutput{} mockKMS.On("Encrypt", mock.AnythingOfType("*kms.EncryptInput")).Return(encryptOutput, nil).Run(func(args mock.Arguments) { encryptOutput.CiphertextBlob = args.Get(0).(*kms.EncryptInput).Plaintext }) mockKMS.On("Decrypt", mock.AnythingOfType("*kms.DecryptInput")).Return(decryptOutput, nil).Run(func(args mock.Arguments) { decryptOutput.Plaintext = args.Get(0).(*kms.DecryptInput).CiphertextBlob }) k := MasterKey{Arn: "arn:aws:kms:us-east-1:927034868273:key/e9fc75db-05e9-44c1-9c35-633922bac347", Role: "", EncryptedKey: ""} f := func(x []byte) bool { err := k.Encrypt(x) if err != nil { fmt.Println(err) } v, err := k.Decrypt() if err != nil { fmt.Println(err) } if x == nil || len(x) == 0 { return true // we can't encrypt 0 bytes } return bytes.Equal(v, x) } config := quick.Config{} if testing.Short() { config.MaxCount = 10 } if err := quick.Check(f, &config); err != nil { t.Error(err) } }