1
0
mirror of https://github.com/Luzifer/password.git synced 2024-09-20 10:52:57 +00:00
password/vendor/github.com/tredoe/osutil/user/gshadow_test.go

130 lines
2.6 KiB
Go
Raw Normal View History

// Copyright 2010 Jonas mg
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package user
import (
"bufio"
"io"
"os"
"testing"
)
func TestGShadowParser(t *testing.T) {
f, err := os.Open(_GSHADOW_FILE)
if err != nil {
t.Fatal(err)
}
defer f.Close()
buf := bufio.NewReader(f)
for {
line, _, err := buf.ReadLine()
if err != nil {
if err == io.EOF {
break
}
t.Error(err)
continue
}
if _, err = parseGShadow(string(line)); err != nil {
t.Error(err)
}
}
}
func TestGShadowFull(t *testing.T) {
entry, err := LookupGShadow("root")
if err != nil || entry == nil {
t.Error(err)
}
entries, err := LookupInGShadow(GS_PASSWD, "!", -1)
if err != nil || entries == nil {
t.Error(err)
}
entries, err = LookupInGShadow(GS_ALL, "", -1)
if err != nil || len(entries) == 0 {
t.Error(err)
}
}
func TestGShadowCount(t *testing.T) {
count := 5
entries, err := LookupInGShadow(GS_ALL, "", count)
if err != nil || len(entries) != count {
t.Error(err)
}
}
func TestGShadowError(t *testing.T) {
_, err := LookupGShadow("!!!???")
if _, ok := err.(NoFoundError); !ok {
t.Error("expected to report NoFoundError")
}
if _, err = LookupInGShadow(GS_MEMBER, "", 0); err != errSearch {
t.Error("expected to report errSearch")
}
gs := &GShadow{}
if err = gs.Add(nil); err != RequiredError("Name") {
t.Error("expected to report RequiredError")
}
}
func TestGShadow_Add(t *testing.T) {
shadow := NewGShadow(GROUP, MEMBERS...)
err := shadow.Add(nil)
if err != nil {
t.Fatal(err)
}
if err = shadow.Add(nil); err == nil {
t.Fatal("a shadowed group existent can not be added again")
} else {
if !IsExist(err) {
t.Error("shadowed group: expected to report ErrExist")
}
}
s, err := LookupGShadow(GROUP)
if err != nil {
t.Fatal(err)
}
if s.Name != GROUP {
t.Errorf("shadowed group: expected to get name %q", GROUP)
}
}
var (
GROUP_KEY1 = []byte("abc")
GROUP_KEY2 = []byte("def")
)
func TestGShadowCrypt(t *testing.T) {
gs, err := LookupGShadow(GROUP)
if err != nil {
t.Fatal(err)
}
gs.Passwd(GROUP_KEY1)
if err = config.crypter.Verify(gs.password, GROUP_KEY1); err != nil {
t.Fatalf("expected to get the same hashed password for %q", GROUP_KEY1)
}
if err = ChGPasswd(GROUP, GROUP_KEY2); err != nil {
t.Fatalf("expected to change password: %s", err)
}
gs, _ = LookupGShadow(GROUP)
if err = config.crypter.Verify(gs.password, GROUP_KEY2); err != nil {
t.Fatalf("ChGPasswd: expected to get the same hashed password for %q", GROUP_KEY2)
}
}