Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/templates/signer/handler_test.go
2070 views
1
package signer
2
3
import (
4
"bytes"
5
"os"
6
"os/exec"
7
"strings"
8
"testing"
9
10
"github.com/projectdiscovery/gologger"
11
"github.com/projectdiscovery/gologger/levels"
12
)
13
14
// This Unit Test generates a new key pair and parses it
15
// to ensure that the key handler works as expected.
16
func TestKeyHandler(t *testing.T) {
17
if val := os.Getenv("KEY_HANDLER_CI"); val != "1" {
18
cmd := exec.Command(os.Args[0], "-test.run=^TestKeyHandler$", "-test.v")
19
cmd.Env = append(cmd.Env, "KEY_HANDLER_CI=1")
20
var buff bytes.Buffer
21
cmd.Stdin = &buff
22
buff.WriteString("CIUSER\n")
23
buff.WriteString("\n")
24
out, err := cmd.CombinedOutput()
25
if !strings.Contains(string(out), "PASS\n") || err != nil {
26
t.Fatalf("%s\n(exit status %v)", string(out), err)
27
}
28
return
29
}
30
gologger.DefaultLogger.SetMaxLevel(levels.LevelSilent)
31
h := &KeyHandler{}
32
noUserPassphrase = true
33
h.GenerateKeyPair()
34
if h.UserCert == nil {
35
t.Fatal("no user cert found")
36
}
37
if h.PrivateKey == nil {
38
t.Fatal("no private key found")
39
}
40
41
// now parse the cert and private key
42
if err := h.ParseUserCert(); err != nil {
43
t.Fatal(err)
44
}
45
if err := h.ParsePrivateKey(); err != nil {
46
t.Fatal(err)
47
}
48
if h.ecdsaKey == nil {
49
t.Fatal("no ecdsa key found")
50
}
51
if h.ecdsaPubKey == nil {
52
t.Fatal("no ecdsa public key found")
53
}
54
if h.cert == nil {
55
t.Fatal("no certificate found")
56
}
57
if h.cert.Subject.CommonName != "CIUSER" {
58
t.Fatal("invalid user name found")
59
}
60
}
61
62