@@ -25,6 +25,7 @@ import (
25
25
testconstants "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/constants"
26
26
test_dclauth "github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/grpc_rest/dclauth"
27
27
"github.com/zigbee-alliance/distributed-compliance-ledger/integration_tests/utils"
28
+ dclcompltypes "github.com/zigbee-alliance/distributed-compliance-ledger/types/compliance"
28
29
dclauthtypes "github.com/zigbee-alliance/distributed-compliance-ledger/x/dclauth/types"
29
30
modeltypes "github.com/zigbee-alliance/distributed-compliance-ledger/x/model/types"
30
31
)
@@ -124,6 +125,21 @@ func NewMsgUpdateModelVersion(
124
125
}
125
126
}
126
127
128
+ func NewMsgCertifyModelVersion (
129
+ signer string ,
130
+ vid int32 ,
131
+ pid int32 ,
132
+ ) * dclcompltypes.MsgCertifyModel {
133
+ return & dclcompltypes.MsgCertifyModel {
134
+ Signer : signer ,
135
+ Vid : vid ,
136
+ Pid : pid ,
137
+ CertificationDate : testconstants .CertificationDate ,
138
+ CDCertificateId : testconstants .CDCertificateID ,
139
+ CertificationType : testconstants .CertificationType ,
140
+ }
141
+ }
142
+
127
143
func AddModel (
128
144
suite * utils.TestSuite ,
129
145
msg * modeltypes.MsgCreateModel ,
@@ -395,6 +411,75 @@ func DeleteModelWithAssociatedModelVersions(suite *utils.TestSuite) {
395
411
require .Nil (suite .T , modelVersion2 )
396
412
}
397
413
414
+ func DeleteModelWithAssociatedModelVersionsCertified (suite * utils.TestSuite ) {
415
+ // Alice and Bob are predefined Trustees
416
+ aliceName := testconstants .AliceAccount
417
+ aliceKeyInfo , err := suite .Kr .Key (aliceName )
418
+ require .NoError (suite .T , err )
419
+ aliceAccount , err := test_dclauth .GetAccount (suite , aliceKeyInfo .GetAddress ())
420
+ require .NoError (suite .T , err )
421
+
422
+ bobName := testconstants .BobAccount
423
+ bobKeyInfo , err := suite .Kr .Key (bobName )
424
+ require .NoError (suite .T , err )
425
+ bobAccount , err := test_dclauth .GetAccount (suite , bobKeyInfo .GetAddress ())
426
+ require .NoError (suite .T , err )
427
+
428
+ // Register new Vendor account
429
+ vid := int32 (tmrand .Uint16 ())
430
+ vendorName := utils .RandString ()
431
+ vendorAccount := test_dclauth .CreateVendorAccount (
432
+ suite ,
433
+ vendorName ,
434
+ dclauthtypes.AccountRoles {dclauthtypes .Vendor },
435
+ vid ,
436
+ aliceName ,
437
+ aliceAccount ,
438
+ bobName ,
439
+ bobAccount ,
440
+ testconstants .Info ,
441
+ )
442
+ require .NotNil (suite .T , vendorAccount )
443
+
444
+ // New vendor adds a model
445
+ pid := int32 (tmrand .Uint16 ())
446
+ createModelMsg := NewMsgCreateModel (vid , pid , vendorAccount .Address )
447
+ _ , err = suite .BuildAndBroadcastTx ([]sdk.Msg {createModelMsg }, vendorName , vendorAccount )
448
+ require .NoError (suite .T , err )
449
+
450
+ createModelVersionMsg1 := NewMsgCreateModelVersion (vid , pid , 1 , "1" , vendorName )
451
+ _ , err = suite .BuildAndBroadcastTx ([]sdk.Msg {createModelVersionMsg1 }, vendorName , vendorAccount )
452
+ require .NoError (suite .T , err )
453
+
454
+ createModelVersionMsg2 := NewMsgCreateModelVersion (vid , pid , 2 , "2" , vendorName )
455
+ _ , err = suite .BuildAndBroadcastTx ([]sdk.Msg {createModelVersionMsg2 }, vendorName , vendorAccount )
456
+ require .NoError (suite .T , err )
457
+
458
+ // certify model version
459
+ certifyModelVersionMsg := NewMsgCertifyModelVersion (aliceName , vid , pid )
460
+ _ , err = suite .BuildAndBroadcastTx ([]sdk.Msg {certifyModelVersionMsg }, aliceName , aliceAccount )
461
+ require .NoError (suite .T , err )
462
+
463
+ deleteModelMsg := NewMsgDeleteModel (vid , pid , vendorName )
464
+ _ , err = suite .BuildAndBroadcastTx ([]sdk.Msg {deleteModelMsg }, vendorName , vendorAccount )
465
+ require .Error (suite .T , err )
466
+
467
+ // check if model is not deleted
468
+ model , err := GetModel (suite , deleteModelMsg .Vid , deleteModelMsg .Pid )
469
+ require .NoError (suite .T , err )
470
+ require .NotNil (suite .T , model )
471
+
472
+ // check if model version 1 is deleted
473
+ modelVersion1 , err := GetModelVersion (suite , createModelVersionMsg1 .Vid , createModelVersionMsg1 .Pid , createModelVersionMsg1 .SoftwareVersion )
474
+ require .NoError (suite .T , err )
475
+ require .NotNil (suite .T , modelVersion1 )
476
+
477
+ // check if model version 2 is deleted
478
+ modelVersion2 , err := GetModelVersion (suite , createModelVersionMsg2 .Vid , createModelVersionMsg2 .Pid , createModelVersionMsg2 .SoftwareVersion )
479
+ require .NoError (suite .T , err )
480
+ require .NotNil (suite .T , modelVersion2 )
481
+ }
482
+
398
483
func Demo (suite * utils.TestSuite ) {
399
484
// Alice and Bob are predefined Trustees
400
485
aliceName := testconstants .AliceAccount
0 commit comments