69 lines
1.3 KiB
Go
69 lines
1.3 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package consul
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type mockServerMetadataWriter struct {
|
|
writeErr error
|
|
}
|
|
|
|
func (m *mockServerMetadataWriter) Write(p []byte) (n int, err error) {
|
|
if m.writeErr != nil {
|
|
return 0, m.writeErr
|
|
}
|
|
|
|
return 1, nil
|
|
}
|
|
|
|
func TestServerMetadata(t *testing.T) {
|
|
now := time.Now()
|
|
|
|
t.Run("TestIsLastSeenStaleTrue", func(t *testing.T) {
|
|
// Create a server that is 48 hours old.
|
|
md := &ServerMetadata{
|
|
LastSeenUnix: now.Add(-48 * time.Hour).Unix(),
|
|
}
|
|
|
|
stale := md.IsLastSeenStale(24 * time.Hour)
|
|
assert.True(t, stale)
|
|
})
|
|
|
|
t.Run("TestIsLastSeenStaleFalse", func(t *testing.T) {
|
|
// Create a server that is 1 hour old.
|
|
md := &ServerMetadata{
|
|
LastSeenUnix: now.Add(-1 * time.Hour).Unix(),
|
|
}
|
|
|
|
stale := md.IsLastSeenStale(24 * time.Hour)
|
|
assert.False(t, stale)
|
|
})
|
|
}
|
|
|
|
func TestWriteServerMetadata(t *testing.T) {
|
|
t.Run("TestWriteError", func(t *testing.T) {
|
|
m := &mockServerMetadataWriter{
|
|
writeErr: errors.New("write error"),
|
|
}
|
|
|
|
err := WriteServerMetadata(m)
|
|
assert.Error(t, err)
|
|
})
|
|
|
|
t.Run("TestOK", func(t *testing.T) {
|
|
b := new(bytes.Buffer)
|
|
|
|
err := WriteServerMetadata(b)
|
|
assert.NoError(t, err)
|
|
assert.True(t, b.Len() > 0)
|
|
})
|
|
}
|