111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package sprig
 | 
						|
 | 
						|
import (
 | 
						|
	"strings"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestSha256Sum(t *testing.T) {
 | 
						|
	tpl := `{{"abc" | sha256sum}}`
 | 
						|
	if err := runt(tpl, "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"); err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestDerivePassword(t *testing.T) {
 | 
						|
	expectations := map[string]string{
 | 
						|
		`{{derivePassword 1 "long" "password" "user" "example.com"}}`:    "ZedaFaxcZaso9*",
 | 
						|
		`{{derivePassword 2 "long" "password" "user" "example.com"}}`:    "Fovi2@JifpTupx",
 | 
						|
		`{{derivePassword 1 "maximum" "password" "user" "example.com"}}`: "pf4zS1LjCg&LjhsZ7T2~",
 | 
						|
		`{{derivePassword 1 "medium" "password" "user" "example.com"}}`:  "ZedJuz8$",
 | 
						|
		`{{derivePassword 1 "basic" "password" "user" "example.com"}}`:   "pIS54PLs",
 | 
						|
		`{{derivePassword 1 "short" "password" "user" "example.com"}}`:   "Zed5",
 | 
						|
		`{{derivePassword 1 "pin" "password" "user" "example.com"}}`:     "6685",
 | 
						|
	}
 | 
						|
 | 
						|
	for tpl, result := range expectations {
 | 
						|
		out, err := runRaw(tpl, nil)
 | 
						|
		if err != nil {
 | 
						|
			t.Error(err)
 | 
						|
		}
 | 
						|
		if 0 != strings.Compare(out, result) {
 | 
						|
			t.Error("Generated password does not match for", tpl)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// NOTE(bacongobbler): this test is really _slow_ because of how long it takes to compute
 | 
						|
// and generate a new crypto key.
 | 
						|
func TestGenPrivateKey(t *testing.T) {
 | 
						|
	// test that calling by default generates an RSA private key
 | 
						|
	tpl := `{{genPrivateKey ""}}`
 | 
						|
	out, err := runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
	if !strings.Contains(out, "RSA PRIVATE KEY") {
 | 
						|
		t.Error("Expected RSA PRIVATE KEY")
 | 
						|
	}
 | 
						|
	// test all acceptable arguments
 | 
						|
	tpl = `{{genPrivateKey "rsa"}}`
 | 
						|
	out, err = runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
	if !strings.Contains(out, "RSA PRIVATE KEY") {
 | 
						|
		t.Error("Expected RSA PRIVATE KEY")
 | 
						|
	}
 | 
						|
	tpl = `{{genPrivateKey "dsa"}}`
 | 
						|
	out, err = runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
	if !strings.Contains(out, "DSA PRIVATE KEY") {
 | 
						|
		t.Error("Expected DSA PRIVATE KEY")
 | 
						|
	}
 | 
						|
	tpl = `{{genPrivateKey "ecdsa"}}`
 | 
						|
	out, err = runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
	if !strings.Contains(out, "EC PRIVATE KEY") {
 | 
						|
		t.Error("Expected EC PRIVATE KEY")
 | 
						|
	}
 | 
						|
	// test bad
 | 
						|
	tpl = `{{genPrivateKey "bad"}}`
 | 
						|
	out, err = runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
	if out != "Unknown type bad" {
 | 
						|
		t.Error("Expected type 'bad' to be an unknown crypto algorithm")
 | 
						|
	}
 | 
						|
	// ensure that we can base64 encode the string
 | 
						|
	tpl = `{{genPrivateKey "rsa" | b64enc}}`
 | 
						|
	out, err = runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestUUIDGeneration(t *testing.T) {
 | 
						|
	tpl := `{{uuidv4}}`
 | 
						|
	out, err := runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if len(out) != 36 {
 | 
						|
		t.Error("Expected UUID of length 36")
 | 
						|
	}
 | 
						|
 | 
						|
	out2, err := runRaw(tpl, nil)
 | 
						|
	if err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
 | 
						|
	if out == out2 {
 | 
						|
		t.Error("Expected subsequent UUID generations to be different")
 | 
						|
	}
 | 
						|
}
 |