173 lines
4.2 KiB
Go
173 lines
4.2 KiB
Go
package openldap
|
|
|
|
import (
|
|
"strconv"
|
|
"testing"
|
|
|
|
"gopkg.in/ldap.v2"
|
|
|
|
"github.com/influxdata/telegraf/testutil"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestOpenldapMockResult(t *testing.T) {
|
|
var acc testutil.Accumulator
|
|
|
|
mockSearchResult := ldap.SearchResult{
|
|
Entries: []*ldap.Entry{
|
|
{
|
|
DN: "cn=Total,cn=Connections,cn=Monitor",
|
|
Attributes: []*ldap.EntryAttribute{{Name: "monitorCounter", Values: []string{"1"}}},
|
|
},
|
|
},
|
|
Referrals: []string{},
|
|
Controls: []ldap.Control{},
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: "localhost",
|
|
Port: 389,
|
|
}
|
|
|
|
gatherSearchResult(&mockSearchResult, o, &acc)
|
|
commonTests(t, o, &acc)
|
|
}
|
|
|
|
func TestOpenldapNoConnection(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: "nosuchhost",
|
|
Port: 389,
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := o.Gather(&acc)
|
|
require.NoError(t, err) // test that we didn't return an error
|
|
assert.Zero(t, acc.NFields()) // test that we didn't return any fields
|
|
assert.NotEmpty(t, acc.Errors) // test that we set an error
|
|
}
|
|
|
|
func TestOpenldapGeneratesMetrics(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: testutil.GetLocalHost(),
|
|
Port: 389,
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := o.Gather(&acc)
|
|
require.NoError(t, err)
|
|
commonTests(t, o, &acc)
|
|
}
|
|
|
|
func TestOpenldapStartTLS(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: testutil.GetLocalHost(),
|
|
Port: 389,
|
|
SSL: "starttls",
|
|
InsecureSkipVerify: true,
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := o.Gather(&acc)
|
|
require.NoError(t, err)
|
|
commonTests(t, o, &acc)
|
|
}
|
|
|
|
func TestOpenldapLDAPS(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: testutil.GetLocalHost(),
|
|
Port: 636,
|
|
SSL: "ldaps",
|
|
InsecureSkipVerify: true,
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := o.Gather(&acc)
|
|
require.NoError(t, err)
|
|
commonTests(t, o, &acc)
|
|
}
|
|
|
|
func TestOpenldapInvalidSSL(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: testutil.GetLocalHost(),
|
|
Port: 636,
|
|
SSL: "invalid",
|
|
InsecureSkipVerify: true,
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := o.Gather(&acc)
|
|
require.NoError(t, err) // test that we didn't return an error
|
|
assert.Zero(t, acc.NFields()) // test that we didn't return any fields
|
|
assert.NotEmpty(t, acc.Errors) // test that we set an error
|
|
}
|
|
|
|
func TestOpenldapBind(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: testutil.GetLocalHost(),
|
|
Port: 389,
|
|
SSL: "",
|
|
InsecureSkipVerify: true,
|
|
BindDn: "cn=manager,cn=config",
|
|
BindPassword: "secret",
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := o.Gather(&acc)
|
|
require.NoError(t, err)
|
|
commonTests(t, o, &acc)
|
|
}
|
|
|
|
func commonTests(t *testing.T, o *Openldap, acc *testutil.Accumulator) {
|
|
assert.Empty(t, acc.Errors, "accumulator had no errors")
|
|
assert.True(t, acc.HasMeasurement("openldap"), "Has a measurement called 'openldap'")
|
|
assert.Equal(t, o.Host, acc.TagValue("openldap", "server"), "Has a tag value of server=o.Host")
|
|
assert.Equal(t, strconv.Itoa(o.Port), acc.TagValue("openldap", "port"), "Has a tag value of port=o.Port")
|
|
assert.True(t, acc.HasInt64Field("openldap", "total_connections"), "Has an integer field called total_connections")
|
|
}
|
|
|
|
func TestOpenldapReverseMetrics(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("Skipping integration test in short mode")
|
|
}
|
|
|
|
o := &Openldap{
|
|
Host: testutil.GetLocalHost(),
|
|
Port: 389,
|
|
SSL: "",
|
|
InsecureSkipVerify: true,
|
|
BindDn: "cn=manager,cn=config",
|
|
BindPassword: "secret",
|
|
ReverseMetricNames: true,
|
|
}
|
|
|
|
var acc testutil.Accumulator
|
|
err := o.Gather(&acc)
|
|
require.NoError(t, err)
|
|
assert.True(t, acc.HasInt64Field("openldap", "connections_total"), "Has an integer field called connections_total")
|
|
}
|