feat: add test for crypto
This commit is contained in:
parent
1218eeaeac
commit
f62438f22d
1 changed files with 91 additions and 0 deletions
91
gpm/crypto_test.go
Normal file
91
gpm/crypto_test.go
Normal file
|
@ -0,0 +1,91 @@
|
|||
package gpm
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestEncrypt(t *testing.T) {
|
||||
secret := []byte("secret data")
|
||||
|
||||
data, err := Encrypt(secret, "passphrase", "salt")
|
||||
if err != nil {
|
||||
t.Errorf("Encrypt mustn't return an error: %s", err)
|
||||
|
||||
}
|
||||
if data == "" {
|
||||
t.Error("Encrypt must generate a string not empty")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDecrypt(t *testing.T) {
|
||||
secret := "secret data"
|
||||
|
||||
dataEncrypted, _ := Encrypt([]byte(secret), "passphrase", "salt")
|
||||
data, err := Decrypt(dataEncrypted, "passphrase", "salt")
|
||||
if err != nil {
|
||||
t.Errorf("Decrypt mustn't return an error: %s", err)
|
||||
}
|
||||
if string(data) != secret {
|
||||
t.Errorf("the encrypted secret is different of decrypted secret: %s", data)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDecryptWithBadPassphrase(t *testing.T) {
|
||||
secret := []byte("secret data")
|
||||
|
||||
dataEncrypted, _ := Encrypt(secret, "passphrase", "salt")
|
||||
_, err := Decrypt(dataEncrypted, "bad", "salt")
|
||||
if err == nil {
|
||||
t.Error("Decrypt must return an error with bad passphrase")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDecryptWithBadSalt(t *testing.T) {
|
||||
secret := []byte("secret data")
|
||||
|
||||
dataEncrypted, _ := Encrypt(secret, "passphrase", "salt")
|
||||
_, err := Decrypt(dataEncrypted, "passphrase", "bad")
|
||||
if err == nil {
|
||||
t.Error("Decrypt must return an error with bad salt")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRandomStringLength(t *testing.T) {
|
||||
password := RandomString(64, false, false, false)
|
||||
if len(password) != 64 {
|
||||
t.Errorf("the string must have 64 chars: %d", len(password))
|
||||
}
|
||||
r := regexp.MustCompile(`^[a-zA-Z0-9]{64}$`)
|
||||
match := r.FindSubmatch([]byte(password))
|
||||
if len(match) == 0 {
|
||||
t.Errorf("the string must contain only digit and alphabetic characters: %s", password)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRandomStringOnlyDigit(t *testing.T) {
|
||||
password := RandomString(64, false, true, false)
|
||||
r := regexp.MustCompile(`^[0-9]{64}$`)
|
||||
match := r.FindSubmatch([]byte(password))
|
||||
if len(match) == 0 {
|
||||
t.Errorf("the string must contain only digit characters: %s", password)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRandomStringOnlyAlphabetic(t *testing.T) {
|
||||
password := RandomString(64, true, false, false)
|
||||
r := regexp.MustCompile(`^[a-zA-Z]{64}$`)
|
||||
match := r.FindSubmatch([]byte(password))
|
||||
if len(match) == 0 {
|
||||
t.Errorf("the string must contain only alphabetic characters: %s", password)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRandomStringOnlySpecial(t *testing.T) {
|
||||
password := RandomString(64, false, false, true)
|
||||
r := regexp.MustCompile(`^[\~\=\+\%\^\*\/\(\)\[\]\{\}\!\@\#\$\?\|]{64}$`)
|
||||
match := r.FindSubmatch([]byte(password))
|
||||
if len(match) == 0 {
|
||||
t.Errorf("the string must contain only alphabetic characters: %s", password)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue