//go:build ignore package api import ( "context" "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "testing" "crypto-miner-server/internal/erasure" ) type s3Up struct{ n int } func (u *s3Up) PutShard(context.Context, string, string, []byte) error { u.n++; return nil } func (u *s3Up) HeadBucket(context.Context, string) error { return nil } func TestAttachErasurePlanUploadsS3Swarm(t *testing.T) { priv, _ := rsa.GenerateKey(rand.Reader, 2048) pemBytes := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}) u := &s3Up{} h := testDeployPlanHandler(t) store := erasure.NewShardStore() h.BindErasure(func() bool { return true }, store) h.BindAWSErasureSwarm(func() erasure.AWSSwarmSettings { return erasure.HydrateAWSSwarmFromEnv(erasure.AWSSwarmSettings{ S3Bucket: "b", CloudFrontDomain: "d.cf.net", Region: "us-east-1", AccessKeyID: "A", SecretAccessKey: "s", KeyPairID: "K", PrivateKeyPEM: string(pemBytes), }) }, func(erasure.AWSSwarmSettings) erasure.ShardObjectStore { return u }) plan, err := h.buildPlan(deployPlanRequest{Platform: "windows", BuildID: "b1"}, "dns_txt:_aether", ServiceDeployLane{Lane: "dns_txt"}) if err != nil { t.Fatalf("buildPlan: %v", err) } if plan.ErasurePlan == nil { t.Fatalf("missing erasure plan n=%d", u.n) } if u.n != 6 || plan.ErasurePlan.Shards[0].EdgeURL == "" { t.Fatalf("n=%d edge=%q", u.n, plan.ErasurePlan.Shards[0].EdgeURL) } }