Skip to content

Commit

Permalink
progress...
Browse files Browse the repository at this point in the history
  • Loading branch information
boojamya committed May 7, 2024
1 parent 906a75f commit 9e67f00
Showing 1 changed file with 251 additions and 2 deletions.
253 changes: 251 additions & 2 deletions interchaintest/fiat_tf_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ func TestFiatTFAcceptOwner(t *testing.T) {
noble := gw.chain
val := noble.Validators[0]

// - Accpet owner while TF is paused -
// - Accept owner while TF is paused -

w := interchaintest.GetAndFundTestUsers(t, ctx, "new-owner-1", 1, noble)
newOwner1 := w[0]
Expand Down Expand Up @@ -184,7 +184,7 @@ func TestFiatTFAcceptOwner(t *testing.T) {
require.Contains(t, txResponse.RawLog, "you are not the pending owner: unauthorized")
require.Greater(t, txResponse.Code, uint32(0), "got 'successful' code response")

// - Accpet owner from blacklisted pending owner -
// - Accept owner from blacklisted pending owner -
// Status:
// Owner: newOwner1
// Pending: newOwner2
Expand All @@ -210,6 +210,247 @@ func TestFiatTFAcceptOwner(t *testing.T) {

}

func TestFiatTFUpdateMasterMinter(t *testing.T) {
if testing.Short() {
t.Skip()
}
t.Parallel()

ctx := context.Background()

gw := nobleSpinUp(ctx, t)
noble := gw.chain
val := noble.Validators[0]

// - Update Master Minter while TF is paused -

pauseFiatTF(t, ctx, val, gw.fiatTfRoles.Pauser)

w := interchaintest.GetAndFundTestUsers(t, ctx, "new-mm-1", 1, noble)
newMM1 := w[0]

_, err := val.ExecTx(ctx, gw.fiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM1.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-master-minter message")

res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-master-minter")
require.NoError(t, err, "failed to query show-master-minter")

var getMasterMinterResponse fiattokenfactorytypes.QueryGetMasterMinterResponse
err = json.Unmarshal(res, &getMasterMinterResponse)
require.NoError(t, err, "failed to unmarshall show-master-minter response")

expectedGetMasterMinterResponse := fiattokenfactorytypes.QueryGetMasterMinterResponse{
MasterMinter: fiattokenfactorytypes.MasterMinter{
Address: string(newMM1.FormattedAddress()),
},
}

require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, getMasterMinterResponse.MasterMinter)

unpauseFiatTF(t, ctx, val, gw.fiatTfRoles.Pauser)

// - Update Master Minter from non owner account -
// Status:
// Master Minter: newMM1

w = interchaintest.GetAndFundTestUsers(t, ctx, "new-mm-2", 1, noble)
newMM2 := w[0]

hash, err := val.ExecTx(ctx, gw.extraWallets.Alice.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM2.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-master-minter message")

res, _, err = val.ExecQuery(ctx, "tx", hash)
require.NoError(t, err, "error querying for tx hash")

var txResponse sdktypes.TxResponse
_ = json.Unmarshal(res, &txResponse)
// ignore the error since some types do not unmarshal (ex: height of int64 vs string)

require.Contains(t, txResponse.RawLog, "you are not the owner: unauthorized")
require.Greater(t, txResponse.Code, uint32(0), "got 'successful' code response")

res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-master-minter")
require.NoError(t, err, "failed to query show-master-minter")

err = json.Unmarshal(res, &getMasterMinterResponse)
require.NoError(t, err, "failed to unmarshall show-master-minter response")

require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, getMasterMinterResponse.MasterMinter)

// - Update Master Minter from blacklisted owner account -
// Status:
// Master Minter: newMM1

blacklistAccount(t, ctx, val, gw.fiatTfRoles.Blacklister, gw.fiatTfRoles.Owner)

_, err = val.ExecTx(ctx, gw.fiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM2.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-master-minter message")

res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-master-minter")
require.NoError(t, err, "failed to query show-master-minter")

err = json.Unmarshal(res, &getMasterMinterResponse)
require.NoError(t, err, "failed to unmarshall show-master-minter response")

expectedGetMasterMinterResponse = fiattokenfactorytypes.QueryGetMasterMinterResponse{
MasterMinter: fiattokenfactorytypes.MasterMinter{
Address: string(newMM2.FormattedAddress()),
},
}

require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, getMasterMinterResponse.MasterMinter)

unblacklistAccount(t, ctx, val, gw.fiatTfRoles.Blacklister, gw.fiatTfRoles.Owner)

// - Update Master Minter to blacklisted Master Minter account -
// Status:
// Master Minter: newMM2

w = interchaintest.GetAndFundTestUsers(t, ctx, "new-mm-3", 1, noble)
newMM3 := w[0]

blacklistAccount(t, ctx, val, gw.fiatTfRoles.Blacklister, newMM3)

_, err = val.ExecTx(ctx, gw.fiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM3.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-master-minter message")

res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-master-minter")
require.NoError(t, err, "failed to query show-master-minter")

err = json.Unmarshal(res, &getMasterMinterResponse)
require.NoError(t, err, "failed to unmarshall show-master-minter response")

expectedGetMasterMinterResponse = fiattokenfactorytypes.QueryGetMasterMinterResponse{
MasterMinter: fiattokenfactorytypes.MasterMinter{
Address: string(newMM3.FormattedAddress()),
},
}

require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, getMasterMinterResponse.MasterMinter)

}

// wip
func TestFiatTFUpdatePauser(t *testing.T) {
if testing.Short() {
t.Skip()
}
t.Parallel()

ctx := context.Background()

gw := nobleSpinUp(ctx, t)
noble := gw.chain
val := noble.Validators[0]

// - Update Pauser while TF is paused -

pauseFiatTF(t, ctx, val, gw.fiatTfRoles.Pauser)

w := interchaintest.GetAndFundTestUsers(t, ctx, "new-pauser-1", 1, noble)
newPauser1 := w[0]

_, err := val.ExecTx(ctx, gw.fiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser1.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-pauser message")

res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-pauser")
require.NoError(t, err, "failed to query show-pauser")

var getPauserResponse fiattokenfactorytypes.QueryGetPauserResponse
err = json.Unmarshal(res, &getPauserResponse)
require.NoError(t, err, "failed to unmarshall show-pauser response")

expectedGetPauserResponse := fiattokenfactorytypes.QueryGetPauserResponse{
Pauser: fiattokenfactorytypes.Pauser{
Address: string(newPauser1.FormattedAddress()),
},
}

require.Equal(t, expectedGetPauserResponse.Pauser, getPauserResponse.Pauser)

unpauseFiatTF(t, ctx, val, newPauser1)

// - Update Pauser from non owner account -
// Status:
// Pauser: newPauser1

w = interchaintest.GetAndFundTestUsers(t, ctx, "new-pauser-2", 1, noble)
newPauser2 := w[0]

hash, err := val.ExecTx(ctx, gw.extraWallets.Alice.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser2.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-pauser message")

res, _, err = val.ExecQuery(ctx, "tx", hash)
require.NoError(t, err, "error querying for tx hash")

var txResponse sdktypes.TxResponse
_ = json.Unmarshal(res, &txResponse)
// ignore the error since some types do not unmarshal (ex: height of int64 vs string)

require.Contains(t, txResponse.RawLog, "you are not the owner: unauthorized")
require.Greater(t, txResponse.Code, uint32(0), "got 'successful' code response")

res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-pauser")
require.NoError(t, err, "failed to query show-pauser")

err = json.Unmarshal(res, &getPauserResponse)
require.NoError(t, err, "failed to unmarshall show-pauser response")

require.Equal(t, expectedGetPauserResponse.Pauser, getPauserResponse.Pauser)

// - Update Pauser from blacklisted owner account -
// Status:
// Pauser: newPauser1

blacklistAccount(t, ctx, val, gw.fiatTfRoles.Blacklister, gw.fiatTfRoles.Owner)

_, err = val.ExecTx(ctx, gw.fiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser2.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-pauser message")

res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-pauser")
require.NoError(t, err, "failed to query show-pauser")

err = json.Unmarshal(res, &getPauserResponse)
require.NoError(t, err, "failed to unmarshall show-pauser response")

expectedGetPauserResponse = fiattokenfactorytypes.QueryGetPauserResponse{
Pauser: fiattokenfactorytypes.Pauser{
Address: string(newPauser2.FormattedAddress()),
},
}

require.Equal(t, expectedGetPauserResponse.Pauser, getPauserResponse.Pauser)

unblacklistAccount(t, ctx, val, gw.fiatTfRoles.Blacklister, gw.fiatTfRoles.Owner)

// - Update Pauser to blacklisted Pauser account -
// Status:
// Pauser: newPauser2

w = interchaintest.GetAndFundTestUsers(t, ctx, "new-pauser-3", 1, noble)
newPauser3 := w[0]

blacklistAccount(t, ctx, val, gw.fiatTfRoles.Blacklister, newPauser3)

_, err = val.ExecTx(ctx, gw.fiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser3.FormattedAddress())
require.NoError(t, err, "failed to broadcast update-pauser message")

res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-pauser")
require.NoError(t, err, "failed to query show-pauser")

err = json.Unmarshal(res, &getPauserResponse)
require.NoError(t, err, "failed to unmarshall show-pauser response")

expectedGetPauserResponse = fiattokenfactorytypes.QueryGetPauserResponse{
Pauser: fiattokenfactorytypes.Pauser{
Address: string(newPauser3.FormattedAddress()),
},
}

require.Equal(t, expectedGetPauserResponse.Pauser, getPauserResponse.Pauser)

}

func blacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, toBlacklist ibc.Wallet) {
_, err := val.ExecTx(ctx, blacklister.KeyName(), "fiat-tokenfactory", "blacklist", toBlacklist.FormattedAddress())
require.NoError(t, err, "failed to broadcast blacklist message")
Expand All @@ -230,6 +471,14 @@ func blacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode,
require.Equal(t, expectedBlacklistResponse.Blacklisted, showBlacklistedResponse.Blacklisted)
}

func unblacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, unBlacklist ibc.Wallet) {
_, err := val.ExecTx(ctx, blacklister.KeyName(), "fiat-tokenfactory", "unblacklist", unBlacklist.FormattedAddress())
require.NoError(t, err, "failed to broadcast blacklist message")

_, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-blacklisted", unBlacklist.FormattedAddress())
require.Error(t, err, "query succeeded, blacklisted account should not exist")
}

func pauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pauser ibc.Wallet) {
_, err := val.ExecTx(ctx, pauser.KeyName(), "fiat-tokenfactory", "pause")
require.NoError(t, err, "error pausing fiat-tokenfactory")
Expand Down

0 comments on commit 9e67f00

Please sign in to comment.