diff options
| author | Jeremy Clerc <jclerc@google.com> | 2015-09-12 20:41:41 +0200 |
|---|---|---|
| committer | Jeremy Clerc <jeremy@clerc.io> | 2015-09-12 20:41:41 +0200 |
| commit | 6f84f07758f1c9ab616ab4da3cbf1ce390a5cf6c (patch) | |
| tree | bdfb7e2feba41ca27c6715a802642ba282af8c24 /pkg | |
| parent | 2c0b2987689e2bb86348c0b530b935320b516336 (diff) | |
| download | easypki-6f84f07758f1c9ab616ab4da3cbf1ce390a5cf6c.tar.xz | |
add test for serial files
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/easyca/easyca_test.go | 105 |
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)) + } +} |
