aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Clerc <jclerc@google.com>2015-09-12 20:41:41 +0200
committerJeremy Clerc <jeremy@clerc.io>2015-09-12 20:41:41 +0200
commit6f84f07758f1c9ab616ab4da3cbf1ce390a5cf6c (patch)
treebdfb7e2feba41ca27c6715a802642ba282af8c24
parent2c0b2987689e2bb86348c0b530b935320b516336 (diff)
downloadeasypki-6f84f07758f1c9ab616ab4da3cbf1ce390a5cf6c.tar.xz
add test for serial files
-rw-r--r--pkg/easyca/easyca_test.go105
1 files changed, 92 insertions, 13 deletions
diff --git a/pkg/easyca/easyca_test.go b/pkg/easyca/easyca_test.go
index 0e2ddb4..6fd4927 100644
--- a/pkg/easyca/easyca_test.go
+++ b/pkg/easyca/easyca_test.go
@@ -1,7 +1,8 @@
package easyca
import (
- "fmt"
+ "io/ioutil"
+ "math/big"
"math/rand"
"os"
"path/filepath"
@@ -9,13 +10,11 @@ import (
"time"
)
-// TODO(jclerc): check correct error if structure already exists
-// TODO(jclerc): check contents of files
func TestGeneratePKIStructure(t *testing.T) {
rand.Seed(time.Now().UnixNano())
- pkiroot := filepath.Join(os.TempDir(), fmt.Sprintf("test-pki-%v", rand.Int63()))
- if err := os.Mkdir(pkiroot, 0755); err != nil {
+ pkiroot, err := ioutil.TempDir("", "gotestpki")
+ if err != nil {
t.Fatalf("failed to create temp dir: %v", err)
}
@@ -25,15 +24,16 @@ func TestGeneratePKIStructure(t *testing.T) {
// We should check the minimum content also..
toCheck := []struct {
- Name string
- Dir bool
+ Name string
+ Dir bool
+ Content string
}{
- {"private", true},
- {"issued", true},
- {"serial", false},
- {"crlnumber", false},
- {"index.txt", false},
- {"index.txt.attr", false},
+ {"private", true, ""},
+ {"issued", true, ""},
+ {"serial", false, "01\n"},
+ {"crlnumber", false, "01\n"},
+ {"index.txt", false, ""},
+ {"index.txt.attr", false, "unique_subject = no\n"},
}
for _, name := range toCheck {
@@ -44,8 +44,87 @@ func TestGeneratePKIStructure(t *testing.T) {
if name.Dir && !fd.IsDir() {
t.Errorf("%v supposed to be a directory", name.Name)
}
+ if len(name.Content) > 0 {
+ f, err := os.Open(filepath.Join(pkiroot, name.Name))
+ if err != nil {
+ t.Fatalf("failed open %v: %v", name.Name, err)
+ }
+ defer f.Close()
+ bytes, err := ioutil.ReadAll(f)
+ if err != nil {
+ t.Fatalf("failed read %v: %v", name.Name, err)
+ }
+ if string(bytes) != name.Content {
+ t.Fatalf("%v content expected %v, got: %v", name.Name, name.Content, string(bytes))
+ }
+ }
}
if err := os.RemoveAll(pkiroot); err != nil {
t.Logf("failed cleaning tmp dir %v: %v", pkiroot, err)
}
}
+
+func TestNextNumber(t *testing.T) {
+ pkiroot, err := ioutil.TempDir("", "gotestpki")
+ if err != nil {
+ t.Fatalf("failed to create temp dir: %v", err)
+ }
+
+ if err := GeneratePKIStructure(pkiroot); err != nil {
+ t.Fatalf("generate pki structure: %v", err)
+ }
+
+ n, err := NextNumber(pkiroot, "serial")
+ if err != nil {
+ t.Fatal("failed get next serial number: %v", err)
+ }
+ if big.NewInt(1).Cmp(n) != 0 {
+ t.Fatalf("after init serial is supposed to be 1, value is: %v", n)
+ }
+ // File content is now 02
+ f, err := os.Open(filepath.Join(pkiroot, "serial"))
+ if err != nil {
+ t.Fatalf("failed open serial: %v", err)
+ }
+ defer f.Close()
+ bytes, err := ioutil.ReadAll(f)
+ if err != nil {
+ t.Fatalf("failed read serial: %v", err)
+ }
+ if string(bytes) != "02\n" {
+ t.Fatalf("serial content expected 02, got: %v", string(bytes))
+ }
+}
+
+func TestLargeNextNumber(t *testing.T) {
+ pkiroot, err := ioutil.TempDir("", "gotestpki")
+ if err != nil {
+ t.Fatalf("failed to create temp dir: %v", err)
+ }
+
+ if err := GeneratePKIStructure(pkiroot); err != nil {
+ t.Fatalf("generate pki structure: %v", err)
+ }
+
+ for {
+ n, err := NextNumber(pkiroot, "serial")
+ if err != nil {
+ t.Fatal("failed get next serial number: %v", err)
+ }
+ if big.NewInt(255).Cmp(n) == 0 {
+ break
+ }
+ }
+ f, err := os.Open(filepath.Join(pkiroot, "serial"))
+ if err != nil {
+ t.Fatalf("failed open serial: %v", err)
+ }
+ defer f.Close()
+ bytes, err := ioutil.ReadAll(f)
+ if err != nil {
+ t.Fatalf("failed read serial: %v", err)
+ }
+ if string(bytes) != "0100\n" {
+ t.Fatalf("serial content expected 0100, got: %v", string(bytes))
+ }
+}