Skip to content

Commit addba7b

Browse files
authored
Merge pull request #26 from classic-terra/classic-wasm-parity
Classic: Parity of Smart Contract Messages
2 parents 98076b5 + c8c159e commit addba7b

9 files changed

+360
-900
lines changed

src/core/wasm/msgs/MsgClearContractAdmin.ts

Lines changed: 40 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -19,132 +19,74 @@ export class MsgClearContractAdmin extends JSONSerializable<
1919

2020
public static fromAmino(
2121
data: MsgClearContractAdmin.Amino,
22-
isClassic?: boolean
22+
_?: boolean
2323
): MsgClearContractAdmin {
24-
if (isClassic) {
25-
const {
26-
value: { admin, contract },
27-
} = data as MsgClearContractAdmin.AminoV1;
28-
return new MsgClearContractAdmin(admin, contract);
29-
} else {
30-
const {
31-
value: { sender, contract },
32-
} = data as MsgClearContractAdmin.AminoV2;
33-
return new MsgClearContractAdmin(sender, contract);
34-
}
24+
const {
25+
value: { sender, contract },
26+
} = data as MsgClearContractAdmin.AminoV2;
27+
return new MsgClearContractAdmin(sender, contract);
3528
}
3629

3730
// eslint-disable-next-line @typescript-eslint/no-unused-vars
38-
public toAmino(isClassic?: boolean): MsgClearContractAdmin.Amino {
31+
public toAmino(_?: boolean): MsgClearContractAdmin.Amino {
3932
const { admin, contract } = this;
40-
if (isClassic) {
41-
return {
42-
type: 'wasm/MsgClearContractAdmin',
43-
value: {
44-
admin,
45-
contract,
46-
},
47-
};
48-
} else {
49-
return {
50-
type: 'wasm/MsgClearAdmin',
51-
value: {
52-
sender: admin,
53-
contract,
54-
},
55-
};
56-
}
33+
return {
34+
type: 'wasm/MsgClearAdmin',
35+
value: {
36+
sender: admin,
37+
contract,
38+
},
39+
};
5740
}
5841

5942
public static fromProto(
6043
data: MsgClearContractAdmin.Proto,
61-
isClassic?: boolean
44+
_?: boolean
6245
): MsgClearContractAdmin {
63-
if (isClassic) {
64-
const { admin, contract } = data as MsgClearContractAdmin.DataV1;
65-
return new MsgClearContractAdmin(admin, contract);
66-
} else {
67-
const { sender, contract } = data as MsgClearContractAdmin.DataV2;
68-
return new MsgClearContractAdmin(sender, contract);
69-
}
46+
const { sender, contract } = data as MsgClearContractAdmin.DataV2;
47+
return new MsgClearContractAdmin(sender, contract);
7048
}
7149

72-
public toProto(isClassic?: boolean): MsgClearContractAdmin.Proto {
73-
if (isClassic) {
74-
return MsgClearContractAdmin_legacy_pb.fromPartial({
75-
admin: this.admin,
76-
contract: this.contract,
77-
});
78-
} else {
79-
return MsgClearAdmin_pb.fromPartial({
80-
sender: this.admin,
81-
contract: this.contract,
82-
});
83-
}
50+
public toProto(_?: boolean): MsgClearContractAdmin.Proto {
51+
return MsgClearAdmin_pb.fromPartial({
52+
sender: this.admin,
53+
contract: this.contract,
54+
});
8455
}
8556

8657
public packAny(isClassic?: boolean): Any {
87-
if (isClassic) {
88-
return Any.fromPartial({
89-
typeUrl: '/terra.wasm.v1beta1.MsgClearContractAdmin',
90-
value: MsgClearContractAdmin_legacy_pb.encode(
91-
this.toProto(isClassic) as MsgClearContractAdmin_legacy_pb
92-
).finish(),
93-
});
94-
} else {
95-
return Any.fromPartial({
96-
typeUrl: '/cosmwasm.wasm.v1.MsgClearAdmin',
97-
value: MsgClearAdmin_pb.encode(
98-
this.toProto(isClassic) as MsgClearAdmin_pb
99-
).finish(),
100-
});
101-
}
58+
return Any.fromPartial({
59+
typeUrl: '/cosmwasm.wasm.v1.MsgClearAdmin',
60+
value: MsgClearAdmin_pb.encode(
61+
this.toProto(isClassic) as MsgClearAdmin_pb
62+
).finish(),
63+
});
10264
}
10365

10466
public static unpackAny(
10567
msgAny: Any,
10668
isClassic?: boolean
10769
): MsgClearContractAdmin {
108-
if (isClassic) {
109-
return MsgClearContractAdmin.fromProto(
110-
MsgClearContractAdmin_legacy_pb.decode(msgAny.value),
111-
isClassic
112-
);
113-
} else {
114-
return MsgClearContractAdmin.fromProto(
115-
MsgClearAdmin_pb.decode(msgAny.value),
116-
isClassic
117-
);
118-
}
70+
return MsgClearContractAdmin.fromProto(
71+
MsgClearAdmin_pb.decode(msgAny.value),
72+
isClassic
73+
);
11974
}
12075

12176
public static fromData(
12277
data: MsgClearContractAdmin.Data,
123-
isClassic?: boolean
78+
_?: boolean
12479
): MsgClearContractAdmin {
125-
if (isClassic) {
126-
const { admin, contract } = data as MsgClearContractAdmin.DataV1;
127-
return new MsgClearContractAdmin(admin, contract);
128-
} else {
129-
const { sender, contract } = data as MsgClearContractAdmin.DataV2;
130-
return new MsgClearContractAdmin(sender, contract);
131-
}
80+
const { sender, contract } = data as MsgClearContractAdmin.DataV2;
81+
return new MsgClearContractAdmin(sender, contract);
13282
}
13383

134-
public toData(isClassic?: boolean): MsgClearContractAdmin.Data {
135-
if (isClassic) {
136-
return {
137-
'@type': '/terra.wasm.v1beta1.MsgClearContractAdmin',
138-
admin: this.admin,
139-
contract: this.contract,
140-
};
141-
} else {
142-
return {
143-
'@type': '/cosmwasm.wasm.v1.MsgClearAdmin',
144-
sender: this.admin,
145-
contract: this.contract,
146-
};
147-
}
84+
public toData(_?: boolean): MsgClearContractAdmin.Data {
85+
return {
86+
'@type': '/cosmwasm.wasm.v1.MsgClearAdmin',
87+
sender: this.admin,
88+
contract: this.contract,
89+
};
14890
}
14991
}
15092

src/core/wasm/msgs/MsgExecuteContract.spec.ts

Lines changed: 31 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@ import { MsgExecuteContract as MsgExecuteContract_legacy_pb } from '@terra-money
33
import { MsgExecuteContract as MsgExecuteContract_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx';
44

55
describe('MsgExecuteContract', () => {
6-
it('legacy: works when execute_msg is not JSON', () => {
7-
const msg1 = MsgExecuteContract.fromAmino({
8-
type: 'wasm/MsgExecuteContract',
9-
value: {
10-
sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h',
11-
contract: 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6',
12-
execute_msg: {
13-
transfer: {
14-
recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt',
15-
amount: 10000,
6+
it('works when execute_msg is not JSON', () => {
7+
const msg1 = MsgExecuteContract.fromAmino(
8+
{
9+
type: 'wasm/MsgExecuteContract',
10+
value: {
11+
sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h',
12+
contract: 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6',
13+
msg: {
14+
transfer: {
15+
recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt',
16+
amount: 10000,
17+
},
1618
},
19+
funds: [],
1720
},
18-
coins: [],
1921
},
20-
}, true);
22+
false
23+
);
2124

2225
expect(msg1.execute_msg).toMatchObject({
2326
transfer: {
@@ -27,10 +30,10 @@ describe('MsgExecuteContract', () => {
2730
});
2831
});
2932

30-
it('works when execute_msg is not JSON', () => {
31-
const msg1 = MsgExecuteContract.fromAmino({
32-
type: 'wasm/MsgExecuteContract',
33-
value: {
33+
it('proto', () => {
34+
const msg1 = MsgExecuteContract.fromData(
35+
{
36+
'@type': '/cosmwasm.wasm.v1.MsgExecuteContract',
3437
sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h',
3538
contract: 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6',
3639
msg: {
@@ -41,51 +44,8 @@ describe('MsgExecuteContract', () => {
4144
},
4245
funds: [],
4346
},
44-
}, false);
45-
46-
expect(msg1.execute_msg).toMatchObject({
47-
transfer: {
48-
recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt',
49-
amount: 10000,
50-
},
51-
});
52-
});
53-
54-
it('legacy proto', () => {
55-
const msg1 = MsgExecuteContract.fromData({
56-
'@type': '/terra.wasm.v1beta1.MsgExecuteContract',
57-
sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h',
58-
contract: 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6',
59-
execute_msg: {
60-
transfer: {
61-
recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt',
62-
amount: 10000,
63-
},
64-
},
65-
coins: [],
66-
}, true);
67-
68-
expect(msg1.execute_msg).toMatchObject({
69-
transfer: {
70-
recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt',
71-
amount: 10000,
72-
},
73-
});
74-
});
75-
76-
it('proto', () => {
77-
const msg1 = MsgExecuteContract.fromData({
78-
'@type': '/cosmwasm.wasm.v1.MsgExecuteContract',
79-
sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h',
80-
contract: 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6',
81-
msg: {
82-
transfer: {
83-
recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt',
84-
amount: 10000,
85-
},
86-
},
87-
funds: [],
88-
}, false);
47+
false
48+
);
8949

9050
expect(msg1.execute_msg).toMatchObject({
9151
transfer: {
@@ -95,49 +55,28 @@ describe('MsgExecuteContract', () => {
9555
});
9656
});
9757

98-
99-
100-
it('legacy: with string msg', () => {
101-
const msgWithExecuteString = new MsgExecuteContract(
102-
'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v',
103-
'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v',
104-
'execute_msg_as_string',
105-
{ uluna: 120400 }
106-
);
107-
const aminoWithExecuteString = msgWithExecuteString.toAmino(true) as MsgExecuteContract.AminoV1;
108-
expect(aminoWithExecuteString.value.execute_msg).toEqual(
109-
msgWithExecuteString.execute_msg
110-
);
111-
const protoWithExecuteString = msgWithExecuteString.toProto(true) as MsgExecuteContract_legacy_pb;
112-
expect(protoWithExecuteString.executeMsg.toString()).toEqual(
113-
JSON.stringify(msgWithExecuteString.execute_msg)
114-
);
115-
const dataWithExecuteString = msgWithExecuteString.toData(true) as MsgExecuteContract.DataV1;
116-
expect(dataWithExecuteString.execute_msg).toEqual(
117-
msgWithExecuteString.execute_msg
118-
);
119-
});
120-
12158
it('with string msg', () => {
12259
const msgWithExecuteString = new MsgExecuteContract(
12360
'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v',
12461
'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v',
12562
'execute_msg_as_string',
12663
{ uluna: 120400 }
12764
);
128-
const aminoWithExecuteString = msgWithExecuteString.toAmino(false) as MsgExecuteContract.AminoV2;
65+
const aminoWithExecuteString = msgWithExecuteString.toAmino(
66+
false
67+
) as MsgExecuteContract.AminoV2;
12968
expect(aminoWithExecuteString.value.msg).toEqual(
13069
msgWithExecuteString.execute_msg
13170
);
132-
const protoWithExecuteString = msgWithExecuteString.toProto(false) as MsgExecuteContract_pb;
71+
const protoWithExecuteString = msgWithExecuteString.toProto(
72+
false
73+
) as MsgExecuteContract_pb;
13374
expect(protoWithExecuteString.msg.toString()).toEqual(
13475
JSON.stringify(msgWithExecuteString.execute_msg)
13576
);
136-
const dataWithExecuteString = msgWithExecuteString.toData(false) as MsgExecuteContract.DataV2;
137-
expect(dataWithExecuteString.msg).toEqual(
138-
msgWithExecuteString.execute_msg
139-
);
77+
const dataWithExecuteString = msgWithExecuteString.toData(
78+
false
79+
) as MsgExecuteContract.DataV2;
80+
expect(dataWithExecuteString.msg).toEqual(msgWithExecuteString.execute_msg);
14081
});
141-
142-
14382
});

0 commit comments

Comments
 (0)