**1. Building:**
The service was successfully built with the CI process or can be built manually using the `cargo build` command in `services/tunnelbroker` directory.
**2. gRPC testings:**
First, run the service using the `cargo run` command.
Open the gRPC client and call the `SessionSignature` request with the valid `deviceID`.
For example:
```
{
"deviceID": "mobile:foS4IBADcn3uUNF8DEoH2jj6b8hujMsKUtNAKhJID4U50oalGWyg9rdLpgJwlmRy"
}
```
The expected result should be the `toSign` generated string from the server:
```
{
"toSign": "7u1iiQNBlrsn0qy9BhlX8BJxttS6cBNnuCtJR1N9Mp8up56Qc4BEZWc9OvJYjlou"
}
```
Generate a key pair and sign the `toSign` string by the private key. Then call `NewSession` gRPC request with the following data:
```
{
"deviceID" = "Your device ID from the first request"
"publicKey = "Your public key"
"signature" = "Signed `toSign` string by your private key from the previous request"
"notifyToken" = "Notification token you can leave it empty"
"deviceType" = "WEB"
"deviceAppVersion" = "You can leave it empty for tests"
deviceOS" = "You can leave it empty for tests"
}
```
The successful response should be the `sessionID` with the new client session identification.
In case of the wrong signed `toSign` string, the server will return an error: "Signature for the verification message is not valid".