Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,379 changes: 4,327 additions & 3,052 deletions package-lock.json

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
"client"
],
"dependencies": {
"@grpc/proto-loader": "^0.6.0",
"@grpc/proto-loader": "^0.7.8",
"async": "^3.1.0",
"call-me-maybe": "^1.0.1",
"grpc-create-metadata": "^4.0.0",
"call-me-maybe": "^1.0.2",
"grpc-create-metadata": "^4.0.1",
"grpc-inspect": "^0.6.0",
"lodash": "^4.17.14",
"promisify-call": "^2.0.0"
Expand All @@ -39,11 +39,11 @@
"@grpc/grpc-js": "^1.2.5"
},
"devDependencies": {
"ava": "^3.15.0",
"google-protobuf": "^3.8.0",
"@grpc/grpc-js": "^1.2.5",
"jsdoc-to-markdown": "^7.0.0",
"standard": "^16.0.0"
"@grpc/grpc-js": "^1.9.0",
"ava": "^6.2.0",
"google-protobuf": "^3.21.2",
"jsdoc-to-markdown": "^8.0.0",
"standard": "^17.1.0"
},
"directories": {
"test": "test"
Expand Down
92 changes: 59 additions & 33 deletions test/basics.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ test.before('should dynamically create service', t => {
server.addService(helloproto.Greeter.service, { sayHello: sayHello })
server.bindAsync(DYNAMIC_HOST, grpc.ServerCredentials.createInsecure(), err => {
t.falsy(err)
server.start()
apps.push(server)
})
})
Expand All @@ -52,48 +51,68 @@ test.before('should statically create service', t => {
server.addService(services.GreeterService, { sayHello: sayHello })
server.bindAsync(STATIC_HOST, grpc.ServerCredentials.createInsecure(), err => {
t.falsy(err)
server.start()
apps.push(server)
})
})

test.cb('call dynamic service using callback', t => {
test('call dynamic service using callback', t => {
t.plan(4)
const client = caller(DYNAMIC_HOST, PROTO_PATH, 'Greeter')
client.sayHello({ name: 'Bob' }, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'Hello Bob')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Bob' }, (err, response) => {
if (err) {
t.falsy(err) // This will fail if there's an error, but we still want to check it
reject(err)
return
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'Hello Bob')
resolve()
})
})
})

test.cb('call dynamic service using callback created using package', t => {
test('call dynamic service using callback created using package', t => {
t.plan(4)
const client = caller(DYNAMIC_HOST, PROTO_PATH, 'helloworld.Greeter')
client.sayHello({ name: 'Bob' }, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'Hello Bob')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Bob' }, (err, response) => {
if (err) {
t.falsy(err) // This will fail if there's an error, but we still want to check it
reject(err)
return
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'Hello Bob')
resolve()
})
})
})

test.cb('call dynamic service using callback and load options', t => {
test('call dynamic service using callback and load options', t => {
t.plan(4)
const client = caller(DYNAMIC_HOST, { load: {}, file: PROTO_PATH }, 'Greeter')
client.sayHello({ name: 'Root' }, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'Hello Root')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Root' }, (err, response) => {
if (err) {
t.falsy(err) // This will fail if there's an error, but we still want to check it
reject(err)
return
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'Hello Root')
resolve()
})
})
})

test.cb('call static service using callback', t => {
test('call static service using callback', t => {
t.plan(5)

const messages = require('./static/helloworld_pb')
Expand All @@ -103,14 +122,21 @@ test.cb('call static service using callback', t => {

const request = new messages.HelloRequest()
request.setName('Jane')
client.sayHello(request, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.getMessage)
const msg = response.getMessage()
t.truthy(msg)
t.is(msg, 'Hello Jane')
t.end()
return new Promise((resolve, reject) => {
client.sayHello(request, (err, response) => {
if (err) {
t.falsy(err) // This will fail if there's an error, but we still want to check it
reject(err)
return
}
t.falsy(err)
t.truthy(response)
t.truthy(response.getMessage)
const msg = response.getMessage()
t.truthy(msg)
t.is(msg, 'Hello Jane')
resolve()
})
})
})

Expand Down Expand Up @@ -150,6 +176,6 @@ test('call static service using async', async t => {
t.is(msg, 'Hello Jane')
})

test.after.always.cb('guaranteed cleanup', t => {
test.after.always('guaranteed cleanup', t => {
async.each(apps, (app, ascb) => app.tryShutdown(ascb), t.end)
})
103 changes: 66 additions & 37 deletions test/defaults.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,51 +41,68 @@ test.before('start test servic', t => {
server.addService(services.GreeterService, { sayHello: sayHello })
server.bindAsync(TEST_HOST, grpc.ServerCredentials.createInsecure(), err => {
t.falsy(err)
server.start()
apps.push(server)
})
})

test.cb('should pass default metadata', t => {
test('should pass default metadata', t => {
t.plan(4)
const client = caller(TEST_HOST, PROTO_PATH, 'helloworld.Greeter', false, {}, { metadata: { foo: 'bar' } })
client.sayHello({ name: 'Bob' }, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Bob' }, (err, response) => {
if (err) {
t.fail(`Error calling sayHello: ${err}`)
return reject(err)
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob')
resolve()
})
})
})

test.cb('should pass extend metadata (simple object)', t => {
test('should pass extend metadata (simple object)', t => {
t.plan(4)
const client = caller(TEST_HOST, PROTO_PATH, 'helloworld.Greeter', false, {}, { metadata: { foo: 'bar', ping: 'pong' } })
client.sayHello({ name: 'Bob' }, { foo: 'bar2000' }, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar2000 -> Hello Bob -> pong')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Bob' }, { foo: 'bar2000' }, (err, response) => {
if (err) {
t.fail(`Error calling sayHello: ${err}`)
return reject(err)
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar2000 -> Hello Bob -> pong')
resolve()
})
})
})

test.cb('should pass extend metadata (grpc.Metadata)', t => {
test('should pass extend metadata (grpc.Metadata)', t => {
t.plan(4)
const meta = new grpc.Metadata()
meta.add('ping', 'master')

const client = caller(TEST_HOST, PROTO_PATH, 'helloworld.Greeter', false, {}, { metadata: { foo: 'bar' } })
client.sayHello({ name: 'Bob' }, meta, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob -> master')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Bob' }, meta, (err, response) => {
if (err) {
t.fail(`Error calling sayHello: ${err}`)
return reject(err)
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob -> master')
resolve()
})
})
})

test.cb('load interceptors and default metadata', t => {
test('load interceptors and default metadata', t => {
t.plan(5)

const interceptor = (options, nextCall) =>
Expand All @@ -101,16 +118,22 @@ test.cb('load interceptors and default metadata', t => {
options: { interceptors: [interceptor] }
})

client.sayHello({ name: 'Bob' }, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob2')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Bob' }, (err, response) => {
if (err) {
t.fail(`Error calling sayHello: ${err}`)
return reject(err)
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob2')
resolve()
})
})
})

test.cb('load interceptors, default metadata and call metadata', t => {
test('load interceptors, default metadata and call metadata', t => {
t.plan(5)

const interceptor = (options, nextCall) =>
Expand All @@ -126,12 +149,18 @@ test.cb('load interceptors, default metadata and call metadata', t => {
options: { interceptors: [interceptor] }
})

client.sayHello({ name: 'Bob' }, { ping: 'meta' }, (err, response) => {
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob2 -> meta')
t.end()
return new Promise((resolve, reject) => {
client.sayHello({ name: 'Bob' }, { ping: 'meta' }, (err, response) => {
if (err) {
t.fail(`Error calling sayHello: ${err}`)
return reject(err)
}
t.falsy(err)
t.truthy(response)
t.truthy(response.message)
t.is(response.message, 'bar -> Hello Bob2 -> meta')
resolve()
})
})
})

Expand Down Expand Up @@ -197,6 +226,6 @@ test('static async options interceptors, default metadata and call metadata', as
t.is(msg, 'bar -> Hello Bob2 -> meta')
})

test.after.always.cb('guaranteed cleanup', t => {
test.after.always('guaranteed cleanup', async t => {
async.each(apps, (app, ascb) => app.tryShutdown(ascb), t.end)
})
Loading