mirror of
https://github.com/TronoSfera/backupy-agent.git
synced 2026-05-18 18:13:30 +03:00
Source ports from the TronoSfera/backupy-cloud monorepo:
- apps/agent/ — Go agent (WSS client, persistent queue, Docker
discovery, 5 DB drivers: PG/MySQL/Mongo/Redis/SQLite,
pre/post hooks, Prometheus metrics)
- apps/backupy-decrypt/ — standalone CLI for client-side decryption
- packages/proto/ — protobuf wire format (generated .pb.go committed
so the repo builds without protoc)
- docs/ — agent spec + wire-protocol contract
Apache-2.0 license. Image published to ghcr.io/tronosfera/backupy-agent
on every v* tag via .github/workflows/release.yml (multi-arch amd64+arm64).
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package logging
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"log/slog"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestParseLevel(t *testing.T) {
|
|
tests := []struct {
|
|
in string
|
|
want slog.Level
|
|
}{
|
|
{"debug", slog.LevelDebug},
|
|
{"trace", slog.LevelDebug},
|
|
{"info", slog.LevelInfo},
|
|
{"INFO", slog.LevelInfo},
|
|
{"warn", slog.LevelWarn},
|
|
{"warning", slog.LevelWarn},
|
|
{"error", slog.LevelError},
|
|
{"", slog.LevelInfo},
|
|
{"bogus", slog.LevelInfo},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.in, func(t *testing.T) {
|
|
require.Equal(t, tt.want, parseLevel(tt.in))
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestRedactSecrets(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
log := NewWithWriter(&buf, "info")
|
|
log.Info("test", slog.String("agent_key", "bkpy_live_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"),
|
|
slog.String("password", "hunter2"),
|
|
slog.String("user", "alice"))
|
|
|
|
var got map[string]any
|
|
require.NoError(t, json.Unmarshal(buf.Bytes(), &got))
|
|
require.Equal(t, "***", got["agent_key"])
|
|
require.Equal(t, "***", got["password"])
|
|
require.Equal(t, "alice", got["user"])
|
|
}
|
|
|
|
func TestNew_EmitsJSON(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
log := NewWithWriter(&buf, "info")
|
|
log.Info("hello", slog.String("k", "v"))
|
|
require.True(t, strings.HasPrefix(strings.TrimSpace(buf.String()), "{"), "expected JSON output")
|
|
}
|