(t *testing.T)
| 27 | ) |
| 28 | |
| 29 | func TestHandler(t *testing.T) { |
| 30 | Codec := codec.NewLegacyAmino() |
| 31 | schemaCodec.RegisterLegacyAminoCodec(Codec) |
| 32 | std.RegisterLegacyAminoCodec(Codec) |
| 33 | Codec.RegisterConcrete(request{}, "request", nil) |
| 34 | Codec.RegisterConcrete(response{}, "response", nil) |
| 35 | |
| 36 | handler := handler(client.Context{}) |
| 37 | viper.Set(flags.FlagKeyringBackend, keyring.BackendTest) |
| 38 | |
| 39 | Keyring, err := keyring.New(sdk.KeyringServiceName(), keyring.BackendTest, viper.GetString(flags.FlagHome), strings.NewReader("")) |
| 40 | require.NoError(t, err) |
| 41 | |
| 42 | router := mux.NewRouter() |
| 43 | RegisterRESTRoutes(client.Context{}, router) |
| 44 | |
| 45 | t.Cleanup(func() { |
| 46 | _ = Keyring.Delete("keyName1") |
| 47 | _ = Keyring.Delete("keyName2") |
| 48 | _ = Keyring.Delete("keyName3") |
| 49 | }) |
| 50 | _, err = Keyring.NewAccount("keyName1", "wage thunder live sense resemble foil apple course spin horse glass mansion midnight laundry acoustic rhythm loan scale talent push green direct brick please", |
| 51 | keyring.DefaultBIP39Passphrase, sdkTypes.FullFundraiserPath, hd.Secp256k1) |
| 52 | require.Nil(t, err) |
| 53 | |
| 54 | address := "cosmos1pkkayn066msg6kn33wnl5srhdt3tnu2vzasz9c" |
| 55 | var sdkAddress sdkTypes.AccAddress |
| 56 | sdkAddress, err = sdkTypes.AccAddressFromBech32(address) |
| 57 | |
| 58 | // signWithout chainID |
| 59 | requestBody1, err := Codec.MarshalJSON(request{ |
| 60 | BaseRequest: rest.BaseReq{From: address}, |
| 61 | Type: "cosmos-sdk/StdTx", |
| 62 | StdTx: legacytx.NewStdTx([]sdkTypes.Msg{base.NewTestMessage(sdkAddress, "id")}, legacytx.NewStdFee(10, sdkTypes.NewCoins()), nil, ""), |
| 63 | }) |
| 64 | require.Nil(t, err) |
| 65 | testRequest1, err := http.NewRequest("POST", "/sign", bytes.NewBuffer(requestBody1)) |
| 66 | require.Nil(t, err) |
| 67 | responseRecorder := httptest.NewRecorder() |
| 68 | handler.ServeHTTP(responseRecorder, testRequest1) |
| 69 | require.Equal(t, responseRecorder.Code, http.StatusBadRequest) |
| 70 | require.Equal(t, `{"error":"Chain-ID required but not specified"}`, responseRecorder.Body.String()) |
| 71 | |
| 72 | // with wrong key |
| 73 | requestBody2, err := Codec.MarshalJSON(request{ |
| 74 | BaseRequest: rest.BaseReq{From: "address", ChainID: "test"}, |
| 75 | Type: "cosmos-sdk/StdTx", |
| 76 | StdTx: legacytx.NewStdTx([]sdkTypes.Msg{base.NewTestMessage(sdkAddress, "id")}, legacytx.NewStdFee(20, sdkTypes.NewCoins()), nil, ""), |
| 77 | }) |
| 78 | require.Nil(t, err) |
| 79 | testRequest2, err := http.NewRequest("POST", "/sign", bytes.NewBuffer(requestBody2)) |
| 80 | require.Nil(t, err) |
| 81 | responseRecorder = httptest.NewRecorder() |
| 82 | handler.ServeHTTP(responseRecorder, testRequest2) |
| 83 | require.Equal(t, responseRecorder.Code, http.StatusBadRequest) |
| 84 | require.Equal(t, `{"error":"The specified item could not be found in the Keyring"}`, responseRecorder.Body.String()) |
| 85 | |
| 86 | // RPC client offline |
nothing calls this directly
no test coverage detected