Merge pull request #35 from Snider/feature-add-good-bad-ugly-tests
Add Good, Bad, and Ugly tests
This commit is contained in:
commit
deff3a80c6
6 changed files with 246 additions and 18 deletions
|
|
@ -3,6 +3,7 @@ package crypt
|
||||||
import (
|
import (
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"crypto/sha1"
|
"crypto/sha1"
|
||||||
|
"errors"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"crypto/sha512"
|
"crypto/sha512"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
|
@ -217,5 +218,8 @@ func (s *Service) VerifyPGP(publicKey, data, signature []byte) error {
|
||||||
// SymmetricallyEncryptPGP encrypts data with a passphrase.
|
// SymmetricallyEncryptPGP encrypts data with a passphrase.
|
||||||
func (s *Service) SymmetricallyEncryptPGP(passphrase, data []byte) ([]byte, error) {
|
func (s *Service) SymmetricallyEncryptPGP(passphrase, data []byte) ([]byte, error) {
|
||||||
s.ensurePGP()
|
s.ensurePGP()
|
||||||
|
if len(passphrase) == 0 {
|
||||||
|
return nil, errors.New("passphrase cannot be empty")
|
||||||
|
}
|
||||||
return s.pgp.SymmetricallyEncrypt(passphrase, data)
|
return s.pgp.SymmetricallyEncrypt(passphrase, data)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,28 @@ import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEnsureRSA(t *testing.T) {
|
// TestEnsureRSA_Good tests that the RSA service is initialized correctly.
|
||||||
|
func TestEnsureRSA_Good(t *testing.T) {
|
||||||
s := &Service{}
|
s := &Service{}
|
||||||
s.ensureRSA()
|
s.ensureRSA()
|
||||||
assert.NotNil(t, s.rsa)
|
assert.NotNil(t, s.rsa)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestEnsureRSA_Bad tests that calling ensureRSA multiple times does not change the RSA service.
|
||||||
|
func TestEnsureRSA_Bad(t *testing.T) {
|
||||||
|
s := &Service{}
|
||||||
|
s.ensureRSA()
|
||||||
|
rsa1 := s.rsa
|
||||||
|
s.ensureRSA()
|
||||||
|
rsa2 := s.rsa
|
||||||
|
assert.Same(t, rsa1, rsa2)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestEnsureRSA_Ugly tests that ensureRSA works correctly on a service with a pre-initialized RSA service.
|
||||||
|
func TestEnsureRSA_Ugly(t *testing.T) {
|
||||||
|
s := NewService() // NewService initializes the RSA service
|
||||||
|
rsa1 := s.rsa
|
||||||
|
s.ensureRSA()
|
||||||
|
rsa2 := s.rsa
|
||||||
|
assert.Same(t, rsa1, rsa2)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,63 @@ func TestPGP_Good(t *testing.T) {
|
||||||
assert.NotNil(t, ciphertext)
|
assert.NotNil(t, ciphertext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPGP_Bad(t *testing.T) {
|
||||||
|
// Generate two key pairs
|
||||||
|
pubKey1, privKey1, err := service.GeneratePGPKeyPair("test1", "test1@test.com", "")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
pubKey2, privKey2, err := service.GeneratePGPKeyPair("test2", "test2@test.com", "")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
message := []byte("secret message")
|
||||||
|
|
||||||
|
// Test decryption with the wrong key
|
||||||
|
ciphertext, err := service.EncryptPGP(pubKey1, message)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
// This should fail because we are using the wrong private key.
|
||||||
|
_, err = service.DecryptPGP(privKey2, ciphertext) // Intentionally using wrong key
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
// Test verification with the wrong key
|
||||||
|
signature, err := service.SignPGP(privKey1, message)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
err = service.VerifyPGP(pubKey2, message, signature)
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
// Test verification with a tampered message
|
||||||
|
tamperedMessage := []byte("tampered message")
|
||||||
|
err = service.VerifyPGP(pubKey1, tamperedMessage, signature)
|
||||||
|
assert.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPGP_Ugly(t *testing.T) {
|
||||||
|
// Test with malformed keys
|
||||||
|
_, err := service.EncryptPGP([]byte("not a real key"), []byte("message"))
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
_, err = service.DecryptPGP([]byte("not a real key"), []byte("message"))
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
_, err = service.SignPGP([]byte("not a real key"), []byte("message"))
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
err = service.VerifyPGP([]byte("not a real key"), []byte("message"), []byte("not a real signature"))
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
// Test with empty message
|
||||||
|
pubKey, privKey, err := service.GeneratePGPKeyPair("test", "test@test.com", "")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
message := []byte("")
|
||||||
|
ciphertext, err := service.EncryptPGP(pubKey, message)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
plaintext, err := service.DecryptPGP(privKey, ciphertext, )
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, message, plaintext)
|
||||||
|
|
||||||
|
// Test symmetric encryption with empty passphrase
|
||||||
|
_, err = service.SymmetricallyEncryptPGP([]byte(""), message)
|
||||||
|
assert.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
// --- IsHashAlgo Tests ---
|
// --- IsHashAlgo Tests ---
|
||||||
|
|
||||||
func TestIsHashAlgo_Good(t *testing.T) {
|
func TestIsHashAlgo_Good(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,21 @@ func TestTransmute_Bad(t *testing.T) {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTransmute_Ugly(t *testing.T) {
|
||||||
|
// Test with nil data
|
||||||
|
_, err := enchantrix.Transmute(nil, []enchantrix.Sigil{&enchantrix.ReverseSigil{}})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Test with nil sigils
|
||||||
|
_, err = enchantrix.Transmute([]byte("hello"), nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Test with no sigils
|
||||||
|
result, err := enchantrix.Transmute([]byte("hello"), []enchantrix.Sigil{})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, "hello", string(result))
|
||||||
|
}
|
||||||
|
|
||||||
// --- Factory Tests ---
|
// --- Factory Tests ---
|
||||||
|
|
||||||
func TestNewSigil_Good(t *testing.T) {
|
func TestNewSigil_Good(t *testing.T) {
|
||||||
|
|
@ -63,3 +78,20 @@ func TestNewSigil_Bad(t *testing.T) {
|
||||||
assert.Nil(t, sigil)
|
assert.Nil(t, sigil)
|
||||||
assert.Contains(t, err.Error(), "unknown sigil name")
|
assert.Contains(t, err.Error(), "unknown sigil name")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewSigil_Ugly(t *testing.T) {
|
||||||
|
// Test with empty string
|
||||||
|
sigil, err := enchantrix.NewSigil("")
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Nil(t, sigil)
|
||||||
|
|
||||||
|
// Test with whitespace
|
||||||
|
sigil, err = enchantrix.NewSigil(" ")
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Nil(t, sigil)
|
||||||
|
|
||||||
|
// Test with non-printable characters
|
||||||
|
sigil, err = enchantrix.NewSigil("\x00\x01\x02")
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Nil(t, sigil)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,9 @@ type ReverseSigil struct{}
|
||||||
|
|
||||||
// In reverses the bytes of the data.
|
// In reverses the bytes of the data.
|
||||||
func (s *ReverseSigil) In(data []byte) ([]byte, error) {
|
func (s *ReverseSigil) In(data []byte) ([]byte, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
reversed := make([]byte, len(data))
|
reversed := make([]byte, len(data))
|
||||||
for i, j := 0, len(data)-1; i < len(data); i, j = i+1, j-1 {
|
for i, j := 0, len(data)-1; i < len(data); i, j = i+1, j-1 {
|
||||||
reversed[i] = data[j]
|
reversed[i] = data[j]
|
||||||
|
|
@ -43,6 +46,9 @@ type HexSigil struct{}
|
||||||
|
|
||||||
// In encodes the data to hexadecimal.
|
// In encodes the data to hexadecimal.
|
||||||
func (s *HexSigil) In(data []byte) ([]byte, error) {
|
func (s *HexSigil) In(data []byte) ([]byte, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
dst := make([]byte, hex.EncodedLen(len(data)))
|
dst := make([]byte, hex.EncodedLen(len(data)))
|
||||||
hex.Encode(dst, data)
|
hex.Encode(dst, data)
|
||||||
return dst, nil
|
return dst, nil
|
||||||
|
|
@ -50,6 +56,9 @@ func (s *HexSigil) In(data []byte) ([]byte, error) {
|
||||||
|
|
||||||
// Out decodes the data from hexadecimal.
|
// Out decodes the data from hexadecimal.
|
||||||
func (s *HexSigil) Out(data []byte) ([]byte, error) {
|
func (s *HexSigil) Out(data []byte) ([]byte, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
dst := make([]byte, hex.DecodedLen(len(data)))
|
dst := make([]byte, hex.DecodedLen(len(data)))
|
||||||
_, err := hex.Decode(dst, data)
|
_, err := hex.Decode(dst, data)
|
||||||
return dst, err
|
return dst, err
|
||||||
|
|
@ -60,6 +69,9 @@ type Base64Sigil struct{}
|
||||||
|
|
||||||
// In encodes the data to base64.
|
// In encodes the data to base64.
|
||||||
func (s *Base64Sigil) In(data []byte) ([]byte, error) {
|
func (s *Base64Sigil) In(data []byte) ([]byte, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
dst := make([]byte, base64.StdEncoding.EncodedLen(len(data)))
|
dst := make([]byte, base64.StdEncoding.EncodedLen(len(data)))
|
||||||
base64.StdEncoding.Encode(dst, data)
|
base64.StdEncoding.Encode(dst, data)
|
||||||
return dst, nil
|
return dst, nil
|
||||||
|
|
@ -67,6 +79,9 @@ func (s *Base64Sigil) In(data []byte) ([]byte, error) {
|
||||||
|
|
||||||
// Out decodes the data from base64.
|
// Out decodes the data from base64.
|
||||||
func (s *Base64Sigil) Out(data []byte) ([]byte, error) {
|
func (s *Base64Sigil) Out(data []byte) ([]byte, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
dst := make([]byte, base64.StdEncoding.DecodedLen(len(data)))
|
dst := make([]byte, base64.StdEncoding.DecodedLen(len(data)))
|
||||||
n, err := base64.StdEncoding.Decode(dst, data)
|
n, err := base64.StdEncoding.Decode(dst, data)
|
||||||
return dst[:n], err
|
return dst[:n], err
|
||||||
|
|
@ -79,6 +94,9 @@ type GzipSigil struct {
|
||||||
|
|
||||||
// In compresses the data using gzip.
|
// In compresses the data using gzip.
|
||||||
func (s *GzipSigil) In(data []byte) ([]byte, error) {
|
func (s *GzipSigil) In(data []byte) ([]byte, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
w := s.writer
|
w := s.writer
|
||||||
if w == nil {
|
if w == nil {
|
||||||
|
|
@ -96,6 +114,9 @@ func (s *GzipSigil) In(data []byte) ([]byte, error) {
|
||||||
|
|
||||||
// Out decompresses the data using gzip.
|
// Out decompresses the data using gzip.
|
||||||
func (s *GzipSigil) Out(data []byte) ([]byte, error) {
|
func (s *GzipSigil) Out(data []byte) ([]byte, error) {
|
||||||
|
if data == nil {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
r, err := gzip.NewReader(bytes.NewReader(data))
|
r, err := gzip.NewReader(bytes.NewReader(data))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ func (m *failOnSecondWrite) Write(p []byte) (n int, err error) {
|
||||||
return len(p), nil
|
return len(p), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReverseSigil(t *testing.T) {
|
func TestReverseSigil_Good(t *testing.T) {
|
||||||
s := &ReverseSigil{}
|
s := &ReverseSigil{}
|
||||||
data := []byte("hello")
|
data := []byte("hello")
|
||||||
reversed, err := s.In(data)
|
reversed, err := s.In(data)
|
||||||
|
|
@ -37,15 +37,23 @@ func TestReverseSigil(t *testing.T) {
|
||||||
original, err := s.Out(reversed)
|
original, err := s.Out(reversed)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "hello", string(original))
|
assert.Equal(t, "hello", string(original))
|
||||||
|
}
|
||||||
|
|
||||||
// Ugly - empty string
|
func TestReverseSigil_Ugly(t *testing.T) {
|
||||||
|
s := &ReverseSigil{}
|
||||||
|
// Test with empty string
|
||||||
empty := []byte("")
|
empty := []byte("")
|
||||||
reversedEmpty, err := s.In(empty)
|
reversedEmpty, err := s.In(empty)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "", string(reversedEmpty))
|
assert.Equal(t, "", string(reversedEmpty))
|
||||||
|
|
||||||
|
// Test with nil
|
||||||
|
reversedNil, err := s.In(nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Nil(t, reversedNil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHexSigil(t *testing.T) {
|
func TestHexSigil_Good(t *testing.T) {
|
||||||
s := &HexSigil{}
|
s := &HexSigil{}
|
||||||
data := []byte("hello")
|
data := []byte("hello")
|
||||||
encoded, err := s.In(data)
|
encoded, err := s.In(data)
|
||||||
|
|
@ -54,13 +62,29 @@ func TestHexSigil(t *testing.T) {
|
||||||
decoded, err := s.Out(encoded)
|
decoded, err := s.Out(encoded)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "hello", string(decoded))
|
assert.Equal(t, "hello", string(decoded))
|
||||||
|
}
|
||||||
|
|
||||||
// Bad - invalid hex string
|
func TestHexSigil_Bad(t *testing.T) {
|
||||||
_, err = s.Out([]byte("not hex"))
|
s := &HexSigil{}
|
||||||
|
_, err := s.Out([]byte("not hex"))
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBase64Sigil(t *testing.T) {
|
func TestHexSigil_Ugly(t *testing.T) {
|
||||||
|
s := &HexSigil{}
|
||||||
|
// Test with empty string
|
||||||
|
empty := []byte("")
|
||||||
|
encodedEmpty, err := s.In(empty)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, "", string(encodedEmpty))
|
||||||
|
|
||||||
|
// Test with nil
|
||||||
|
encodedNil, err := s.In(nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Nil(t, encodedNil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBase64Sigil_Good(t *testing.T) {
|
||||||
s := &Base64Sigil{}
|
s := &Base64Sigil{}
|
||||||
data := []byte("hello")
|
data := []byte("hello")
|
||||||
encoded, err := s.In(data)
|
encoded, err := s.In(data)
|
||||||
|
|
@ -69,13 +93,29 @@ func TestBase64Sigil(t *testing.T) {
|
||||||
decoded, err := s.Out(encoded)
|
decoded, err := s.Out(encoded)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "hello", string(decoded))
|
assert.Equal(t, "hello", string(decoded))
|
||||||
|
}
|
||||||
|
|
||||||
// Bad - invalid base64 string
|
func TestBase64Sigil_Bad(t *testing.T) {
|
||||||
_, err = s.Out([]byte("not base64"))
|
s := &Base64Sigil{}
|
||||||
|
_, err := s.Out([]byte("not base64"))
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGzipSigil(t *testing.T) {
|
func TestBase64Sigil_Ugly(t *testing.T) {
|
||||||
|
s := &Base64Sigil{}
|
||||||
|
// Test with empty string
|
||||||
|
empty := []byte("")
|
||||||
|
encodedEmpty, err := s.In(empty)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, "", string(encodedEmpty))
|
||||||
|
|
||||||
|
// Test with nil
|
||||||
|
encodedNil, err := s.In(nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Nil(t, encodedNil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGzipSigil_Good(t *testing.T) {
|
||||||
s := &GzipSigil{}
|
s := &GzipSigil{}
|
||||||
data := []byte("hello")
|
data := []byte("hello")
|
||||||
compressed, err := s.In(data)
|
compressed, err := s.In(data)
|
||||||
|
|
@ -84,9 +124,14 @@ func TestGzipSigil(t *testing.T) {
|
||||||
decompressed, err := s.Out(compressed)
|
decompressed, err := s.Out(compressed)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "hello", string(decompressed))
|
assert.Equal(t, "hello", string(decompressed))
|
||||||
|
}
|
||||||
|
|
||||||
// Bad - invalid gzip data
|
func TestGzipSigil_Bad(t *testing.T) {
|
||||||
_, err = s.Out([]byte("not gzip"))
|
s := &GzipSigil{}
|
||||||
|
data := []byte("hello")
|
||||||
|
|
||||||
|
// Test with invalid gzip data
|
||||||
|
_, err := s.Out([]byte("not gzip"))
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
|
|
||||||
// Test writer error
|
// Test writer error
|
||||||
|
|
@ -100,27 +145,60 @@ func TestGzipSigil(t *testing.T) {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJSONSigil(t *testing.T) {
|
func TestGzipSigil_Ugly(t *testing.T) {
|
||||||
|
s := &GzipSigil{}
|
||||||
|
// Test with empty string
|
||||||
|
empty := []byte("")
|
||||||
|
compressedEmpty, err := s.In(empty)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
decompressedEmpty, err := s.Out(compressedEmpty)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, "", string(decompressedEmpty))
|
||||||
|
|
||||||
|
// Test with nil
|
||||||
|
compressedNil, err := s.In(nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
decompressedNil, err := s.Out(compressedNil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Nil(t, decompressedNil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJSONSigil_Good(t *testing.T) {
|
||||||
s := &JSONSigil{Indent: true}
|
s := &JSONSigil{Indent: true}
|
||||||
data := []byte(`{"hello":"world"}`)
|
data := []byte(`{"hello":"world"}`)
|
||||||
indented, err := s.In(data)
|
indented, err := s.In(data)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "{\n \"hello\": \"world\"\n}", string(indented))
|
assert.Equal(t, "{\n \"hello\": \"world\"\n}", string(indented))
|
||||||
|
|
||||||
s.Indent = false
|
s.Indent = false
|
||||||
compacted, err := s.In(indented)
|
compacted, err := s.In(indented)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, `{"hello":"world"}`, string(compacted))
|
assert.Equal(t, `{"hello":"world"}`, string(compacted))
|
||||||
|
|
||||||
// Bad - invalid json
|
// Out is a no-op
|
||||||
_, err = s.In([]byte("not json"))
|
|
||||||
assert.Error(t, err)
|
|
||||||
|
|
||||||
// Out is a no-op, so it should return the data as-is
|
|
||||||
outData, err := s.Out(data)
|
outData, err := s.Out(data)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, data, outData)
|
assert.Equal(t, data, outData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJSONSigil_Bad(t *testing.T) {
|
||||||
|
s := &JSONSigil{}
|
||||||
|
_, err := s.In([]byte("not json"))
|
||||||
|
assert.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestJSONSigil_Ugly(t *testing.T) {
|
||||||
|
s := &JSONSigil{}
|
||||||
|
// Test with empty string
|
||||||
|
empty := []byte("")
|
||||||
|
_, err := s.In(empty)
|
||||||
|
assert.Error(t, err)
|
||||||
|
|
||||||
|
// Test with nil
|
||||||
|
_, err = s.In(nil)
|
||||||
|
assert.Error(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
func TestHashSigils_Good(t *testing.T) {
|
func TestHashSigils_Good(t *testing.T) {
|
||||||
// Using the input "hello" for all hash tests
|
// Using the input "hello" for all hash tests
|
||||||
data := []byte("hello")
|
data := []byte("hello")
|
||||||
|
|
@ -172,3 +250,19 @@ func TestHashSigil_Bad(t *testing.T) {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
assert.Contains(t, err.Error(), "hash algorithm not available")
|
assert.Contains(t, err.Error(), "hash algorithm not available")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHashSigil_Ugly(t *testing.T) {
|
||||||
|
s, err := NewSigil("sha256")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Test with empty string
|
||||||
|
empty := []byte("")
|
||||||
|
hashedEmpty, err := s.In(empty)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotEmpty(t, hashedEmpty)
|
||||||
|
|
||||||
|
// Test with nil
|
||||||
|
hashedNil, err := s.In(nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotEmpty(t, hashedNil)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue