Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 2 additions & 43 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,65 +3,24 @@ module github.com/kgoins/ldsview
go 1.13

require (
9fans.net/go v0.0.2 // indirect
github.com/Djarvur/go-err113 v0.1.0 // indirect
github.com/alecthomas/gometalinter v3.0.0+incompatible // indirect
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
github.com/audibleblink/msldapuac v0.2.0
github.com/davidrjenni/reftools v0.0.0-20191222082827-65925cf01315 // indirect
github.com/fatih/gomodifytags v1.6.0 // indirect
github.com/fatih/motion v1.1.0 // indirect
github.com/fatih/structtag v1.2.0 // indirect
github.com/go-delve/delve v1.5.0 // indirect
github.com/golangci/golangci-lint v1.31.0 // indirect
github.com/golangci/misspell v0.3.5 // indirect
github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 // indirect
github.com/google/go-dap v0.3.0 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/gostaticanalysis/analysisutil v0.2.1 // indirect
github.com/fsnotify/fsnotify v1.4.9 // indirect
github.com/icza/backscanner v0.0.0-20200205093934-2120fccb01f7
github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect
github.com/josharian/impl v1.0.0 // indirect
github.com/jstemmer/gotags v1.4.1 // indirect
github.com/keegancsmith/rpc v1.3.0 // indirect
github.com/kisielk/errcheck v1.4.0 // indirect
github.com/klauspost/asmfmt v1.2.1 // indirect
github.com/koron/iferr v0.0.0-20180615142939-bb332a3b1d91 // indirect
github.com/magiconair/properties v1.8.4 // indirect
github.com/matoous/godox v0.0.0-20200801072554-4fb83dc2941e // indirect
github.com/mattn/go-colorable v0.1.7 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/mdempsky/gocode v0.0.0-20200405233807-4acdcbdea79d // indirect
github.com/mitchellh/go-homedir v1.1.0
github.com/mitchellh/mapstructure v1.3.3 // indirect
github.com/nicksnyder/go-i18n v1.10.1 // indirect
github.com/pelletier/go-toml v1.8.1 // indirect
github.com/peterh/liner v1.2.0 // indirect
github.com/quasilyte/regex/syntax v0.0.0-20200805063351-8f842688393c // indirect
github.com/rogpeppe/godef v1.1.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/spf13/afero v1.4.0 // indirect
github.com/spf13/cast v1.3.1 // indirect
github.com/spf13/cobra v1.0.0
github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.7.1
github.com/stamblerre/gocode v1.0.0 // indirect
github.com/stretchr/objx v0.3.0 // indirect
github.com/stretchr/testify v1.6.1
github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b // indirect
github.com/tetafro/godot v0.4.9 // indirect
github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 // indirect
github.com/zmb3/gogetdoc v0.0.0-20190228002656-b37376c5da6a // indirect
go.starlark.net v0.0.0-20200901195727-6e684ef5eeee // indirect
go.uber.org/zap v1.10.0
golang.org/x/arch v0.0.0-20200826200359-b19915210f00 // indirect
golang.org/x/lint v0.0.0-20200302205851-738671d3881b // indirect
golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d // indirect
golang.org/x/tools v0.0.0-20200924182824-0f1c53950d78 // indirect
gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20191105091915-95d230a53780 // indirect
gopkg.in/ini.v1 v1.61.0 // indirect
gopkg.in/yaml.v2 v2.3.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect
mvdan.cc/gofumpt v0.0.0-20200802201014-ab5a8192947d // indirect
mvdan.cc/unparam v0.0.0-20200501210554-b37ab49443f7 // indirect
)
393 changes: 0 additions & 393 deletions go.sum

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions pkg/attribute_test.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package ldsview_test
package ldsview

import (
"testing"

ldsview "github.com/kgoins/ldsview/pkg"
)

func TestAttribute_BuildFromValidLine(t *testing.T) {
attrLine := "userAccountControl: 66048"

attr, err := ldsview.BuildAttributeFromLine(attrLine)
attr, err := BuildAttributeFromLine(attrLine)
if err != nil {
t.Fatalf("Unable to build from valid attr line")
}
Expand Down
12 changes: 6 additions & 6 deletions pkg/entity_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ package ldsview
import (
"strings"
"testing"

ldsview "github.com/kgoins/ldsview/pkg"
)

var EntityStr string = `# MYUSR, ContosoUsers, contoso.com
var EntityStr = `
# MYUSR, ContosoUsers, contoso.com
dn: CN=MYUSR,OU=ContosoUsers,DC=contoso,DC=com
objectClass: top
objectClass: person
Expand Down Expand Up @@ -44,12 +43,13 @@ dSCorePropagationData: 20190407190910.0Z
dSCorePropagationData: 20190311163932.0Z
dSCorePropagationData: 16010714223649.0Z
lastLogonTimestamp: 130674899604502606

`

func TestEntity_BuildEntity(t *testing.T) {
entityLines := strings.Split(EntityStr, "\n")[1:]

entity := ldsview.BuildEntity(entityLines)
entity := BuildEntity(entityLines)

if entity.IsEmpty() {
t.Fatalf("failed to parse entity")
Expand All @@ -73,9 +73,9 @@ func TestEntity_BuildEntityWithAttrFilter(t *testing.T) {
"userPrincipalName",
"objectClass",
}
attrFilter := ldsview.BuildAttributeFilter(attrsList)
attrFilter := BuildAttributeFilter(attrsList)

entity := ldsview.BuildEntityFromAttrList(entityLines, &attrFilter)
entity := BuildEntityFromAttrList(entityLines, &attrFilter)

if entity.IsEmpty() {
t.Fatalf("failed to parse entity")
Expand Down
44 changes: 19 additions & 25 deletions pkg/ldif_parser_test.go
Original file line number Diff line number Diff line change
@@ -1,37 +1,31 @@
package ldsview_test
package ldsview

import (
"testing"

ldsview "github.com/kgoins/ldsview/pkg"
"github.com/stretchr/testify/assert"
)

func TestLdifParser_CountEntities(t *testing.T) {
parser := ldsview.NewLdifParser(TESTFILE)
var parser = NewLdifParser(TESTFILE)

count, err := parser.CountEntities()
if err != nil {
t.Fatalf("unable to parse test file")
}
func TestLdifParser(t *testing.T) {

if count != 5 {
t.Fatalf("Failed to count entities")
}
}

func TestLdifParser_CountEntitiesWithFilter(t *testing.T) {
parser := ldsview.NewLdifParser(TESTFILE)
t.Run("counts the ldif objects correctly", func(t *testing.T) {
want := 2
got, err := parser.CountEntities()
assert.Equal(t, want, got)
assert.Nil(t, err)
})

entityFilterStr := []string{"objectClass:=computer"}
entityFilter, _ := ldsview.BuildEntityFilter(entityFilterStr)
parser.SetEntityFilter(entityFilter)
t.Run("counts the filtered ldif objects correctly", func(t *testing.T) {
entityFilterStr := []string{"objectClass:=computer"}
entityFilter, _ := BuildEntityFilter(entityFilterStr)
parser.SetEntityFilter(entityFilter)

count, err := parser.CountEntities()
if err != nil {
t.Fatalf("unable to parse test file")
}
want := 1
got, err := parser.CountEntities()
assert.Equal(t, want, got)
assert.Nil(t, err)
})

if count != 1 {
t.Fatalf("Failed to count filtered entities")
}
}
4 changes: 2 additions & 2 deletions pkg/pkg_main_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
package ldsview_test
package ldsview

const TESTFILE string = "../testdata/test_users.ldif"
const TESTFILE = "../testdata/test_users.ldif"
8 changes: 3 additions & 5 deletions pkg/structure_builder_test.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package ldsview_test
package ldsview

import (
"testing"

ldsview "github.com/kgoins/ldsview/pkg"
)

func TestStructureBuilder_GetStructure(t *testing.T) {
parser := ldsview.NewLdifParser(TESTFILE)
parser := NewLdifParser(TESTFILE)

structure, err := ldsview.GetStructure(&parser)
structure, err := GetStructure(&parser)
if err != nil {
t.Fatalf("failed to parse ldif for domain structure")
}
Expand Down
85 changes: 85 additions & 0 deletions testdata/test_users.ldif
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# extended LDIF
#
# LDAPv3
# base <DC=contoso,DC=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
# with pagedResults control: size=5000
#

# MYUSR, ContosoUsers, contoso.com
dn: CN=MYUSR,OU=ContosoUsers,DC=contoso,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: MYUSR
givenName: MYUSR
distinguishedName: CN=MYUSR,OU=ContosoUsers,DC=contoso,DC=com
instanceType: 4
whenCreated: 20120423175240.0Z
whenChanged: 20190225044802.0Z
displayName: MYUSR
uSNCreated: 793245
memberOf: CN=vault_users,OU=Global,OU=Security,OU=Groups,DC=contoso,DC=com
memberOf: CN=PWD Complexity,OU=Security,OU=Groups,DC=contoso,DC=com
uSNChanged: 1076364863
name: MYUSR
objectGUID:: 7OBfD10nQkSVYY8UHCV2aQ==
userAccountControl: 66048
codePage: 0
countryCode: 0
pwdLastSet: 129857191591306845
primaryGroupID: 805306368
objectSid:: AQUAAAAAAAUVAAAAa9ZiBBbA6jKDPStVYiIMAA==
accountExpires: 9223372036854775807
sAMAccountName: MYUSR
sAMAccountType: 805306368
userPrincipalName: [email protected]
lockoutTime: 0
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=contoso,DC=com
dSCorePropagationData: 20190827201429.0Z
dSCorePropagationData: 20190529140155.0Z
dSCorePropagationData: 20190407190910.0Z
dSCorePropagationData: 20190311163932.0Z
dSCorePropagationData: 16010714223649.0Z
lastLogonTimestamp: 130674899604502606

# MYPC, ContosoUsers, contoso.com
dn: CN=MYPC,OU=ContosoUsers,DC=contoso,DC=com
objectClass: top
objectClass: computer
objectClass: organizationalPerson
objectClass: user
cn: MYPC
givenName: MYPC
distinguishedName: CN=MYPC,OU=ContosoUsers,DC=contoso,DC=com
instanceType: 4
whenCreated: 20120423175240.0Z
whenChanged: 20190225044802.0Z
displayName: MYPC
uSNCreated: 793245
memberOf: CN=vault_users,OU=Global,OU=Security,OU=Groups,DC=contoso,DC=com
memberOf: CN=PWD Complexity,OU=Security,OU=Groups,DC=contoso,DC=com
uSNChanged: 1076364863
name: MYPC
objectGUID:: 7OBfD10nQkSVYY8UHCV2aQ==
userAccountControl: 66048
codePage: 0
countryCode: 0
pwdLastSet: 129857191591306845
primaryGroupID: 805306368
objectSid:: AQUAAAAAAAUVAAAAa9ZiBBbA6jKDPStVYiIMAA==
accountExpires: 9223372036854775807
sAMAccountName: MYPC
sAMAccountType: 805306368
userPrincipalName: [email protected]
lockoutTime: 0
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=contoso,DC=com
dSCorePropagationData: 20190827201429.0Z
dSCorePropagationData: 20190529140155.0Z
dSCorePropagationData: 20190407190910.0Z
dSCorePropagationData: 20190311163932.0Z
dSCorePropagationData: 16010714223649.0Z
lastLogonTimestamp: 130674899604502606