0.4.1 • Published 4 years ago

mountebank-grpc-mts v0.4.1

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

Mountebank-gRPC

Custom gRPC protocol implementation for Mountebank. This works for unary/streaming/bidi requests as well as with Mountebank proxy functionality.

This makes use of nodejs and the google-protobuf and @grpc/proto-loader modules to generate gRPC descriptors from .proto files. This does not support reflection.

Setup

Install project:

npm install mountebank-grpc-mts

Create protocols.json file for gRPC:

{
    "grpc": {
        "createCommand": "mb-grpc"
    }
}

Start Mountebank with protocols file:

mb start --protofile protocols.json

Example

To load a gRPC imposter (via POST http://<MB_SERVER>:<MB_PORT>/imposters):

{
    "protocol": "grpc",
    "port": 4545,
    "loglevel": "debug",
    "recordRequests": true,
    "_note_services": "need the name of the package, service and protofile location for this to load",
    "services": {
        "example.ExampleService": {
            "file": "example.proto"
        }
    },
    "options": {
        "protobufjs": {
            "_note": "any options to protobufjs",
            "includeDirs": ["/path/to/include/protos", "/etc/mountebank/mountebank-grpc/src/protos"]
        }
    },
    "stubs": [{
        "predicates": [
            {
                "matches": { "path": "UnaryUnary" },
                "caseSensitive": false
            }
        ],
        "responses": [
            {
                "is": {
                    "value": {
                        "_note": "gRPC mock unary call response",
                        "_note_streaming": "this is a unary/unary call, streaming requests need the value to be an array",
                        "id": 100,
                        "data": "mock response"
                    },
                    "metadata": {
                        "_note": "gRPC mock initial/trailing metadata response",
                        "initial": {
                            "metadata-initial-key": "metadata-initial-value"
                        },
                        "trailing": {
                            "metadata-trailing-key": "metadata-trailing-value"
                        }
                    },
                    "error": {
                        "_note": "gRPC mock error",
                        "status": "OUT_OF_RANGE",
                        "message": "invalid message"
                    }
                }
            }
        ]
    }]
}

To load a gRPC proxy imposter:

{
    "protocol": "grpc",
    "port": 4546,
    "loglevel": "debug",
    "recordRequests": true,
    "services": {
        "example.ExampleService": {
            "file": "/etc/mountebank/mountebank-grpc/src/protos/example.proto"
        }
    },
    "stubs": [
        {
            "responses": [
                {
                    "proxy": {
                        "to": "localhost:4545",
                        "mode": "proxyAlways",
                        "predicateGenerators": [{ "matches": {"path": true} }]
                    }
                }
            ]
        }
    ]
}
0.4.1

4 years ago

0.4.0

4 years ago

0.3.0

4 years ago

0.3.1

4 years ago

0.2.73

4 years ago

0.2.72

4 years ago

0.2.71

4 years ago

0.2.70

4 years ago

0.2.63

4 years ago

0.2.62

4 years ago

0.2.69

4 years ago

0.2.68

4 years ago

0.2.67

4 years ago

0.2.66

4 years ago

0.2.65

4 years ago

0.2.64

4 years ago

0.2.61

4 years ago

0.2.60

4 years ago

0.2.27

4 years ago

0.2.26

4 years ago

0.2.25

4 years ago

0.2.52

4 years ago

0.2.51

4 years ago

0.2.50

4 years ago

0.2.59

4 years ago

0.2.58

4 years ago

0.2.57

4 years ago

0.2.56

4 years ago

0.2.55

4 years ago

0.2.54

4 years ago

0.2.53

4 years ago

0.2.41

4 years ago

0.2.40

4 years ago

0.2.49

4 years ago

0.2.48

4 years ago

0.2.47

4 years ago

0.2.46

4 years ago

0.2.45

4 years ago

0.2.44

4 years ago

0.2.43

4 years ago

0.2.42

4 years ago

0.2.39

4 years ago

0.2.30

4 years ago

0.2.38

4 years ago

0.2.37

4 years ago

0.2.36

4 years ago

0.2.35

4 years ago

0.2.34

4 years ago

0.2.33

4 years ago

0.2.32

4 years ago

0.2.31

4 years ago

0.2.29

4 years ago

0.2.28

4 years ago

0.2.16

4 years ago

0.2.15

4 years ago

0.2.14

4 years ago

0.2.24

4 years ago

0.2.13

4 years ago

0.2.23

4 years ago

0.2.12

4 years ago

0.2.22

4 years ago

0.2.11

4 years ago

0.2.21

4 years ago

0.2.10

4 years ago

0.2.20

4 years ago

0.2.19

4 years ago

0.2.18

4 years ago

0.2.17

4 years ago

0.2.7

4 years ago

0.2.6

4 years ago

0.2.9

4 years ago

0.2.8

4 years ago

0.2.5

4 years ago

0.2.4

4 years ago

0.2.3

4 years ago