add header x-namespace-id (#140)
authorCarlos Santana <csantanapr@apache.org>
Thu, 27 Sep 2018 15:57:00 +0000 (11:57 -0400)
committerJames Thomas <jthomas.uk@gmail.com>
Thu, 27 Sep 2018 15:57:00 +0000 (16:57 +0100)
* add header x-namespace-id

Closes #139

* add tests for x-namespace-id header injection

lib/client.js
test/unit/client.test.js

index 180a5b9..488e363 100644 (file)
@@ -136,6 +136,10 @@ class Client {
         // caller asked for no user agent?
         parms.headers['User-Agent'] = undefined
       }
+      if (typeof this.options.namespace === 'string') {
+        // identify namespace targeting a public/shared entity
+        parms.headers['x-namespace-id'] = this.options.namespace
+      }
 
       return parms
     })
index 6d8fad3..c79cfb5 100644 (file)
@@ -205,3 +205,30 @@ test('should throw errors for non-HTTP response failures', t => {
   const client = new Client({api_key: true, api: true})
   t.throws(() => client.handleErrors({message: 'error message'}), /error message/)
 })
+
+test('should contain x-namespace-id header when namespace in contructor options', async t => {
+  const authHandler = {
+    getAuthHeader: () => {
+      return Promise.resolve('Bearer access_token')
+    }
+  }
+  const client = new Client({apihost: 'my_host', namespace: 'ns', auth_handler: authHandler})
+  const METHOD = 'POST'
+  const PATH = '/publicnamespace/path/to/resource'
+  let params = await client.params(METHOD, PATH, {})
+  t.is(client.options.namespace, 'ns')
+  t.is(params.headers['x-namespace-id'], client.options.namespace)
+})
+
+test('should not contain x-namespace-id header when namespace is not in contructor options', async t => {
+  const authHandler = {
+    getAuthHeader: () => {
+      return Promise.resolve('Bearer access_token')
+    }
+  }
+  const client = new Client({apihost: 'my_host', auth_handler: authHandler})
+  const METHOD = 'POST'
+  const PATH = '/publicnamespace/path/to/resource'
+  let params = await client.params(METHOD, PATH, {})
+  t.is(params.headers['x-namespace-id'], undefined)
+})