(Feat): Initial Commit
This commit is contained in:
70
internal/api/handlers/common/probes_internal_test.go
Normal file
70
internal/api/handlers/common/probes_internal_test.go
Normal file
@@ -0,0 +1,70 @@
|
||||
// nolint:revive
|
||||
package common
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"errors"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"allaboutapps.dev/aw/go-starter/internal/util"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestEnsureDeadline(t *testing.T) {
|
||||
deadline := time.Now().Add(1 * time.Second)
|
||||
|
||||
ctx, cancel := context.WithDeadline(t.Context(), deadline)
|
||||
defer cancel()
|
||||
|
||||
receivedDeadline := ensureProbeDeadlineFromContext(ctx)
|
||||
assert.Equal(t, deadline, receivedDeadline)
|
||||
}
|
||||
|
||||
func TestDummyDeadlineWithinOneSec(t *testing.T) {
|
||||
ctx := t.Context()
|
||||
|
||||
receivedDeadline := ensureProbeDeadlineFromContext(ctx)
|
||||
assert.WithinDuration(t, time.Now().Add(1*time.Second), receivedDeadline, 100*time.Millisecond)
|
||||
}
|
||||
|
||||
func TestProbeDatabasePingableDeadline(t *testing.T) {
|
||||
ctx, cancel := context.WithDeadline(t.Context(), time.Now())
|
||||
defer cancel()
|
||||
|
||||
_, err := probeDatabasePingable(ctx, &sql.DB{})
|
||||
assert.Truef(t, errors.Is(err, util.ErrWaitTimeout) || errors.Is(err, context.DeadlineExceeded), "err must be util.ErrWaitTimeout or context.DeadlineExceeded but is %v", err)
|
||||
}
|
||||
|
||||
func TestProbeDatabaseNextHealthSequenceDeadline(t *testing.T) {
|
||||
ctx, cancel := context.WithDeadline(t.Context(), time.Now())
|
||||
defer cancel()
|
||||
|
||||
_, err := probeDatabaseNextHealthSequence(ctx, &sql.DB{})
|
||||
assert.Truef(t, errors.Is(err, util.ErrWaitTimeout) || errors.Is(err, context.DeadlineExceeded), "err must be util.ErrWaitTimeout or context.DeadlineExceeded but is %v", err)
|
||||
}
|
||||
|
||||
func TestProbePathWriteablePermissionContextDeadline(t *testing.T) {
|
||||
ctx, cancel := context.WithDeadline(t.Context(), time.Now())
|
||||
defer cancel()
|
||||
|
||||
_, err := probePathWriteablePermission(ctx, "/any/thing")
|
||||
assert.Truef(t, errors.Is(err, util.ErrWaitTimeout) || errors.Is(err, context.DeadlineExceeded), "err must be util.ErrWaitTimeout or context.DeadlineExceeded but is %v", err)
|
||||
}
|
||||
|
||||
func TestProbePathWriteableTouchContextDeadline(t *testing.T) {
|
||||
ctx, cancel := context.WithDeadline(t.Context(), time.Now())
|
||||
defer cancel()
|
||||
|
||||
_, err := probePathWriteableTouch(ctx, "/any/thing", ".touch")
|
||||
assert.Truef(t, errors.Is(err, util.ErrWaitTimeout) || errors.Is(err, context.DeadlineExceeded), "err must be util.ErrWaitTimeout or context.DeadlineExceeded but is %v", err)
|
||||
}
|
||||
|
||||
func TestProbePathWriteableTouchInaccessable(t *testing.T) {
|
||||
_, err := probePathWriteableTouch(t.Context(), "/this/path/does/not/exist", ".touch")
|
||||
require.Error(t, err)
|
||||
assert.ErrorIs(t, err, os.ErrNotExist)
|
||||
}
|
||||
Reference in New Issue
Block a user