@@ -2,9 +2,13 @@ package container_test
22
33import (
44 "context"
5+ "crypto/ecdsa"
6+ "crypto/elliptic"
7+ "crypto/rand"
58 "crypto/sha256"
69 "testing"
710
11+ "github.com/google/uuid"
812 "github.com/nspcc-dev/neo-go/pkg/crypto/keys"
913 "github.com/nspcc-dev/neofs-api-go/v2/container"
1014 "github.com/nspcc-dev/neofs-api-go/v2/refs"
@@ -17,6 +21,7 @@ import (
1721 cidtest "github.com/nspcc-dev/neofs-sdk-go/container/id/test"
1822 containertest "github.com/nspcc-dev/neofs-sdk-go/container/test"
1923 neofscrypto "github.com/nspcc-dev/neofs-sdk-go/crypto"
24+ neofsecdsa "github.com/nspcc-dev/neofs-sdk-go/crypto/ecdsa"
2025 sessionsdk "github.com/nspcc-dev/neofs-sdk-go/session"
2126 sessiontest "github.com/nspcc-dev/neofs-sdk-go/session/test"
2227 "github.com/nspcc-dev/neofs-sdk-go/user"
@@ -32,11 +37,11 @@ func (m mock) Get(_ cid.ID) (*containerCore.Container, error) {
3237 return & containerCore.Container {Value : m .cnr }, nil
3338}
3439
35- func (m mock ) GetEACL (id cid.ID ) (* containerCore.EACL , error ) {
40+ func (m mock ) GetEACL (_ cid.ID ) (* containerCore.EACL , error ) {
3641 return nil , nil
3742}
3843
39- func (m mock ) List (id * user.ID ) ([]cid.ID , error ) {
44+ func (m mock ) List (_ * user.ID ) ([]cid.ID , error ) {
4045 return nil , nil
4146}
4247
@@ -279,6 +284,44 @@ func TestValidateToken(t *testing.T) {
279284 _ , err = e .Delete (context .TODO (), & tokV2 , & reqBody )
280285 require .Error (t , err )
281286 })
287+
288+ t .Run ("wildcard support" , func (t * testing.T ) {
289+ var reqBody container.DeleteRequestBody
290+ reqBody .SetContainerID (& cIDV2 )
291+
292+ var tok sessionsdk.Container
293+
294+ priv , err := ecdsa .GenerateKey (elliptic .P256 (), rand .Reader )
295+ require .NoError (t , err )
296+
297+ tok .SetExp (11 )
298+ tok .SetNbf (22 )
299+ tok .SetIat (33 )
300+ tok .ForVerb (sessionsdk .VerbContainerDelete )
301+ tok .SetID (uuid .New ())
302+ tok .SetAuthKey ((* neofsecdsa .PublicKey )(& priv .PublicKey ))
303+ require .NoError (t , tok .Sign (signer ))
304+
305+ var tokV2 session.Token
306+ tok .WriteToV2 (& tokV2 )
307+
308+ m := & mock {cnr : cnr }
309+ e := containerSvcMorph .NewExecutor (m , m )
310+
311+ t .Run ("wrong owner" , func (t * testing.T ) {
312+ m .cnr = containertest .Container (t )
313+
314+ _ , err := e .Delete (context .TODO (), & tokV2 , & reqBody )
315+ require .Error (t , err )
316+ })
317+
318+ t .Run ("correct owner" , func (t * testing.T ) {
319+ m .cnr = cnr
320+
321+ _ , err := e .Delete (context .TODO (), & tokV2 , & reqBody )
322+ require .NoError (t , err )
323+ })
324+ })
282325}
283326
284327func generateToken (t * testing.T , ctx session.TokenContext , signer user.Signer ) * session.Token {
0 commit comments