nitrogen 0.2.24 → 0.29.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +18 -108
  2. package/lib/Logger.js +56 -0
  3. package/lib/autolinking/Autolinking.js +1 -0
  4. package/lib/autolinking/android/createCMakeExtension.js +109 -0
  5. package/lib/autolinking/android/createGradleExtension.js +36 -0
  6. package/lib/autolinking/android/createHybridObjectInitializer.js +159 -0
  7. package/lib/autolinking/createAndroidAutolinking.js +13 -0
  8. package/lib/autolinking/createIOSAutolinking.js +19 -0
  9. package/lib/autolinking/ios/createHybridObjectInitializer.js +97 -0
  10. package/lib/autolinking/ios/createPodspecRubyExtension.js +69 -0
  11. package/lib/autolinking/ios/createSwiftCxxBridge.js +117 -0
  12. package/lib/autolinking/ios/createSwiftUmbrellaHeader.js +74 -0
  13. package/lib/config/NitroConfig.js +112 -0
  14. package/lib/config/NitroUserConfig.js +88 -0
  15. package/lib/config/getConfig.js +84 -0
  16. package/lib/createGitAttributes.js +11 -0
  17. package/lib/createPlatformSpec.js +127 -0
  18. package/lib/getFiles.js +28 -0
  19. package/lib/getPlatformSpecs.js +153 -0
  20. package/lib/index.js +113 -10
  21. package/lib/init.js +123 -0
  22. package/lib/nitrogen.js +165 -0
  23. package/lib/prettifyDirectory.js +27 -0
  24. package/lib/syntax/BridgedType.js +1 -0
  25. package/lib/syntax/CodeNode.js +1 -0
  26. package/lib/syntax/HybridObjectSpec.js +1 -0
  27. package/lib/syntax/Method.js +108 -0
  28. package/lib/syntax/Parameter.js +65 -0
  29. package/lib/syntax/Property.js +147 -0
  30. package/lib/syntax/SourceFile.js +7 -0
  31. package/lib/syntax/c++/CppEnum.js +110 -0
  32. package/lib/syntax/c++/CppHybridObject.js +146 -0
  33. package/lib/syntax/c++/CppHybridObjectRegistration.js +18 -0
  34. package/lib/syntax/c++/CppStruct.js +108 -0
  35. package/lib/syntax/c++/CppUnion.js +88 -0
  36. package/lib/syntax/c++/getForwardDeclaration.js +14 -0
  37. package/lib/syntax/c++/includeNitroHeader.js +34 -0
  38. package/lib/syntax/createType.js +303 -0
  39. package/lib/syntax/getAllTypes.js +11 -0
  40. package/lib/syntax/getCustomTypeConfig.js +53 -0
  41. package/lib/syntax/getHybridObjectName.d.ts +36 -0
  42. package/lib/syntax/getHybridObjectName.js +10 -0
  43. package/lib/syntax/getInterfaceProperties.js +9 -0
  44. package/lib/syntax/getReferencedTypes.js +47 -0
  45. package/lib/syntax/helpers.js +53 -0
  46. package/lib/syntax/isCoreType.js +47 -0
  47. package/lib/syntax/kotlin/FbjniHybridObject.js +261 -0
  48. package/lib/syntax/kotlin/JNINativeRegistrations.js +7 -0
  49. package/lib/syntax/kotlin/KotlinBoxedPrimitive.js +17 -0
  50. package/lib/syntax/kotlin/KotlinCxxBridgedType.js +893 -0
  51. package/lib/syntax/kotlin/KotlinEnum.js +113 -0
  52. package/lib/syntax/kotlin/KotlinFunction.js +256 -0
  53. package/lib/syntax/kotlin/KotlinHybridObject.js +177 -0
  54. package/lib/syntax/kotlin/KotlinHybridObjectRegistration.js +26 -0
  55. package/lib/syntax/kotlin/KotlinStruct.js +172 -0
  56. package/lib/syntax/kotlin/KotlinVariant.js +191 -0
  57. package/lib/syntax/swift/SwiftCxxBridgedType.js +819 -0
  58. package/lib/syntax/swift/SwiftCxxTypeHelper.js +613 -0
  59. package/lib/syntax/swift/SwiftEnum.js +52 -0
  60. package/lib/syntax/swift/SwiftFunction.js +83 -0
  61. package/lib/syntax/swift/SwiftHybridObject.js +103 -0
  62. package/lib/syntax/swift/SwiftHybridObjectBridge.js +451 -0
  63. package/lib/syntax/swift/SwiftHybridObjectRegistration.js +42 -0
  64. package/lib/syntax/swift/SwiftStruct.js +75 -0
  65. package/lib/syntax/swift/SwiftVariant.js +58 -0
  66. package/lib/syntax/types/ArrayBufferType.js +37 -0
  67. package/lib/syntax/types/ArrayType.d.ts +12 -0
  68. package/lib/syntax/types/ArrayType.js +52 -0
  69. package/lib/syntax/types/BigIntType.js +27 -0
  70. package/lib/syntax/types/BooleanType.js +27 -0
  71. package/lib/syntax/types/CustomType.d.ts +14 -0
  72. package/lib/syntax/types/CustomType.js +36 -0
  73. package/lib/syntax/types/DateType.js +35 -0
  74. package/lib/syntax/types/EnumType.js +101 -0
  75. package/lib/syntax/types/ErrorType.js +37 -0
  76. package/lib/syntax/types/FunctionType.js +147 -0
  77. package/lib/syntax/types/HybridObjectBaseType.js +38 -0
  78. package/lib/syntax/types/HybridObjectType.js +131 -0
  79. package/lib/syntax/types/MapType.js +37 -0
  80. package/lib/syntax/types/NamedWrappingType.js +27 -0
  81. package/lib/syntax/types/NullType.js +23 -0
  82. package/lib/syntax/types/NumberType.js +27 -0
  83. package/lib/syntax/types/OptionalType.js +59 -0
  84. package/lib/syntax/types/PromiseType.js +62 -0
  85. package/lib/syntax/types/RecordType.js +47 -0
  86. package/lib/syntax/types/ResultWrappingType.js +44 -0
  87. package/lib/syntax/types/StringType.js +35 -0
  88. package/lib/syntax/types/StructType.js +61 -0
  89. package/lib/syntax/types/TupleType.js +39 -0
  90. package/lib/syntax/types/Type.js +1 -0
  91. package/lib/syntax/types/VariantType.js +75 -0
  92. package/lib/syntax/types/VoidType.js +27 -0
  93. package/lib/syntax/types/getTypeAs.js +12 -0
  94. package/lib/utils.js +126 -0
  95. package/lib/views/CppHybridViewComponent.js +256 -0
  96. package/lib/views/createHostComponentJs.js +27 -0
  97. package/lib/views/kotlin/KotlinHybridViewManager.js +229 -0
  98. package/lib/views/swift/SwiftHybridViewManager.js +131 -0
  99. package/lib/writeFile.js +19 -0
  100. package/package.json +58 -29
  101. package/src/Logger.ts +63 -0
  102. package/src/autolinking/Autolinking.ts +9 -0
  103. package/src/autolinking/android/createCMakeExtension.ts +126 -0
  104. package/src/autolinking/android/createGradleExtension.ts +43 -0
  105. package/src/autolinking/android/createHybridObjectInitializer.ts +174 -0
  106. package/src/autolinking/createAndroidAutolinking.ts +28 -0
  107. package/src/autolinking/createIOSAutolinking.ts +24 -0
  108. package/src/autolinking/ios/createHybridObjectInitializer.ts +112 -0
  109. package/src/autolinking/ios/createPodspecRubyExtension.ts +76 -0
  110. package/src/autolinking/ios/createSwiftCxxBridge.ts +137 -0
  111. package/src/autolinking/ios/createSwiftUmbrellaHeader.ts +90 -0
  112. package/src/config/NitroConfig.ts +139 -0
  113. package/src/config/NitroUserConfig.ts +105 -0
  114. package/src/config/getConfig.ts +91 -0
  115. package/src/createGitAttributes.ts +15 -0
  116. package/src/createPlatformSpec.ts +176 -0
  117. package/src/getFiles.ts +31 -0
  118. package/src/getPlatformSpecs.ts +202 -0
  119. package/src/index.ts +146 -0
  120. package/src/init.ts +186 -0
  121. package/src/nitrogen.ts +246 -0
  122. package/src/prettifyDirectory.ts +32 -0
  123. package/src/syntax/BridgedType.ts +59 -0
  124. package/src/syntax/CodeNode.ts +24 -0
  125. package/src/syntax/HybridObjectSpec.ts +14 -0
  126. package/src/syntax/Method.ts +154 -0
  127. package/src/syntax/Parameter.ts +81 -0
  128. package/src/syntax/Property.ts +203 -0
  129. package/src/syntax/SourceFile.ts +80 -0
  130. package/src/syntax/c++/CppEnum.ts +128 -0
  131. package/src/syntax/c++/CppHybridObject.ts +165 -0
  132. package/src/syntax/c++/CppHybridObjectRegistration.ts +39 -0
  133. package/src/syntax/c++/CppStruct.ts +129 -0
  134. package/src/syntax/c++/CppUnion.ts +105 -0
  135. package/src/syntax/c++/getForwardDeclaration.ts +19 -0
  136. package/src/syntax/c++/includeNitroHeader.ts +40 -0
  137. package/src/syntax/createType.ts +365 -0
  138. package/src/syntax/getAllTypes.ts +18 -0
  139. package/src/syntax/getCustomTypeConfig.ts +71 -0
  140. package/src/syntax/getHybridObjectName.ts +48 -0
  141. package/src/syntax/getInterfaceProperties.ts +21 -0
  142. package/src/syntax/getReferencedTypes.ts +57 -0
  143. package/src/syntax/helpers.ts +79 -0
  144. package/src/syntax/isCoreType.ts +60 -0
  145. package/src/syntax/kotlin/FbjniHybridObject.ts +313 -0
  146. package/src/syntax/kotlin/JNINativeRegistrations.ts +19 -0
  147. package/src/syntax/kotlin/KotlinBoxedPrimitive.ts +19 -0
  148. package/src/syntax/kotlin/KotlinCxxBridgedType.ts +942 -0
  149. package/src/syntax/kotlin/KotlinEnum.ts +130 -0
  150. package/src/syntax/kotlin/KotlinFunction.ts +277 -0
  151. package/src/syntax/kotlin/KotlinHybridObject.ts +205 -0
  152. package/src/syntax/kotlin/KotlinHybridObjectRegistration.ts +51 -0
  153. package/src/syntax/kotlin/KotlinStruct.ts +198 -0
  154. package/src/syntax/kotlin/KotlinVariant.ts +212 -0
  155. package/src/syntax/swift/SwiftCxxBridgedType.ts +874 -0
  156. package/src/syntax/swift/SwiftCxxTypeHelper.ts +674 -0
  157. package/src/syntax/swift/SwiftEnum.ts +65 -0
  158. package/src/syntax/swift/SwiftFunction.ts +91 -0
  159. package/src/syntax/swift/SwiftHybridObject.ts +121 -0
  160. package/src/syntax/swift/SwiftHybridObjectBridge.ts +522 -0
  161. package/src/syntax/swift/SwiftHybridObjectRegistration.ts +75 -0
  162. package/src/syntax/swift/SwiftStruct.ts +85 -0
  163. package/src/syntax/swift/SwiftVariant.ts +67 -0
  164. package/src/syntax/types/ArrayBufferType.ts +49 -0
  165. package/src/syntax/types/ArrayType.ts +62 -0
  166. package/src/syntax/types/BigIntType.ts +35 -0
  167. package/src/syntax/types/BooleanType.ts +35 -0
  168. package/src/syntax/types/CustomType.ts +47 -0
  169. package/src/syntax/types/DateType.ts +43 -0
  170. package/src/syntax/types/EnumType.ts +130 -0
  171. package/src/syntax/types/ErrorType.ts +44 -0
  172. package/src/syntax/types/FunctionType.ts +167 -0
  173. package/src/syntax/types/HybridObjectBaseType.ts +54 -0
  174. package/src/syntax/types/HybridObjectType.ts +198 -0
  175. package/src/syntax/types/MapType.ts +49 -0
  176. package/src/syntax/types/NamedWrappingType.ts +33 -0
  177. package/src/syntax/types/NullType.ts +30 -0
  178. package/src/syntax/types/NumberType.ts +34 -0
  179. package/src/syntax/types/OptionalType.ts +66 -0
  180. package/src/syntax/types/PromiseType.ts +72 -0
  181. package/src/syntax/types/RecordType.ts +56 -0
  182. package/src/syntax/types/ResultWrappingType.ts +53 -0
  183. package/src/syntax/types/StringType.ts +44 -0
  184. package/src/syntax/types/StructType.ts +83 -0
  185. package/src/syntax/types/TupleType.ts +53 -0
  186. package/src/syntax/types/Type.ts +82 -0
  187. package/src/syntax/types/VariantType.ts +92 -0
  188. package/src/syntax/types/VoidType.ts +34 -0
  189. package/src/syntax/types/getTypeAs.ts +15 -0
  190. package/src/utils.ts +162 -0
  191. package/src/views/CppHybridViewComponent.ts +304 -0
  192. package/src/views/createHostComponentJs.ts +34 -0
  193. package/src/views/kotlin/KotlinHybridViewManager.ts +258 -0
  194. package/src/views/swift/SwiftHybridViewManager.ts +153 -0
  195. package/src/writeFile.ts +27 -0
  196. package/.jshintignore +0 -6
  197. package/.jshintrc +0 -3
  198. package/.npmignore +0 -3
  199. package/.travis.yml +0 -13
  200. package/LICENSE +0 -13
  201. package/browser/nitrogen-min.js +0 -3
  202. package/browser/nitrogen.js +0 -6369
  203. package/lib/apiKey.js +0 -67
  204. package/lib/blob.js +0 -57
  205. package/lib/commandManager.js +0 -350
  206. package/lib/device.js +0 -19
  207. package/lib/memoryStore.js +0 -24
  208. package/lib/message.js +0 -298
  209. package/lib/permission.js +0 -121
  210. package/lib/principal.js +0 -330
  211. package/lib/service.js +0 -347
  212. package/lib/session.js +0 -494
  213. package/lib/user.js +0 -20
  214. package/publish +0 -2
  215. package/scripts/build-documentation +0 -4
  216. package/scripts/build-module +0 -27
  217. package/scripts/module.js +0 -12
  218. package/scripts/postamble.js +0 -1
  219. package/scripts/preamble.js +0 -2
  220. package/scripts/run-test-server +0 -9
  221. package/test/config.js +0 -12
  222. package/test/fixtures/images/image.jpg +0 -0
  223. package/test/fixtures/images/motion0.jpg +0 -0
  224. package/test/fixtures/images/motion1.jpg +0 -0
  225. package/test/fixtures/images/motion2.jpg +0 -0
  226. package/test/fixtures/index.js +0 -76
  227. package/test/main.js +0 -5
  228. package/test/memoryStore.js +0 -22
  229. package/test/mocha.opts +0 -3
  230. package/test/units/apiKey.js +0 -46
  231. package/test/units/blob.js +0 -35
  232. package/test/units/commandManager.js +0 -67
  233. package/test/units/device.js +0 -26
  234. package/test/units/heartbeat.js +0 -28
  235. package/test/units/message.js +0 -79
  236. package/test/units/permissions.js +0 -43
  237. package/test/units/principal.js +0 -116
  238. package/test/units/service.js +0 -92
  239. package/test/units/session.js +0 -97
  240. package/test/units/user.js +0 -48
  241. package/yuidoc.json +0 -8
@@ -1,22 +0,0 @@
1
- function MemoryStore() {
2
- this.clear();
3
- }
4
-
5
- MemoryStore.prototype.clear = function(callback) {
6
- this.store = {};
7
- };
8
-
9
- MemoryStore.prototype.get = function(key, callback) {
10
- return callback(null, this.store[key]);
11
- };
12
-
13
- MemoryStore.prototype.set = function(key, value, callback) {
14
- this.store[key] = value;
15
- if (callback) callback();
16
- };
17
-
18
- MemoryStore.prototype.delete = function(key, callback) {
19
- delete this.store[key];
20
- };
21
-
22
- module.exports = MemoryStore;
package/test/mocha.opts DELETED
@@ -1,3 +0,0 @@
1
- --reporter spec
2
- --check-leaks
3
- --recursive
@@ -1,46 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('apiKey object', function() {
7
- var service = new nitrogen.Service(config);
8
-
9
- it('should be able to find all api keys for user', function(done) {
10
- service.authenticate(fixtures.models.user, function(err, session, user) {
11
- assert(!err);
12
- assert.notEqual(!session, true);
13
- assert.notEqual(!user, true);
14
-
15
- nitrogen.ApiKey.find(session, {}, {}, function(err, apiKeys) {
16
- assert(!err);
17
-
18
- assert(apiKeys.length === 1);
19
- assert(apiKeys[0].owner === fixtures.models.user.id);
20
-
21
- done();
22
- });
23
- });
24
- });
25
-
26
- it('should be able to create an api key', function(done) {
27
- service.authenticate(fixtures.models.user, function(err, session, user) {
28
- assert(!err);
29
- assert.notEqual(!session, true);
30
- assert.notEqual(!user, true);
31
-
32
- var apiKey = new nitrogen.ApiKey({
33
- type: 'app',
34
- name: 'My App',
35
- redirect_uri: 'http://myserver'
36
- });
37
-
38
- apiKey.create(session, function(err, apiKey) {
39
- assert(!err);
40
- assert(apiKey.id);
41
-
42
- done();
43
- });
44
- });
45
- });
46
- });
@@ -1,35 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , fs = require('fs')
5
- , nitrogen = require('../../lib');
6
-
7
- describe('blob object', function() {
8
-
9
- it('should be able to save and get a blob', function(done) {
10
- var service = new nitrogen.Service(config);
11
-
12
- service.connect(fixtures.models.camera, function(err, session) {
13
- assert(!err);
14
-
15
- var blob = new nitrogen.Blob({
16
- content_type: 'image/jpeg'
17
- });
18
-
19
- blob.save(session, fs.createReadStream('test/fixtures/images/image.jpg'), function(err, blob) {
20
- assert(!err);
21
-
22
- assert(blob.url);
23
- assert(blob.link);
24
- assert.equal(blob.url.slice(-(blob.id.length+1)), "/" + blob.id);
25
-
26
- session.get({ url: blob.url }, function(err, resp, blobData) {
27
- assert(!err);
28
- assert.equal(resp.statusCode, 200);
29
- assert.equal(blobData.length, 28014);
30
- done();
31
- });
32
- });
33
- });
34
- });
35
- });
@@ -1,67 +0,0 @@
1
- var assert = require('assert')
2
- , nitrogen = require('../../lib');
3
-
4
- function MockManager() {
5
- nitrogen.CommandManager.apply(this, arguments);
6
-
7
- this.executedCount = 0;
8
- }
9
-
10
- MockManager.prototype = Object.create(nitrogen.CommandManager.prototype);
11
- MockManager.prototype.constructor = nitrogen.CameraManager;
12
-
13
- MockManager.prototype.executeCommand = function() {
14
- this.executedCount += 1;
15
- this.executing = false;
16
- };
17
-
18
- MockManager.prototype.isCommand = function(message) {
19
- return (message.is('cameraCommand'));
20
- };
21
-
22
- MockManager.prototype.isRelevant = function(message) {
23
- return message.is('cameraCommand') || message.is('image');
24
- };
25
-
26
- MockManager.prototype.obsoletes = function(downstreamMsg, upstreamMsg) {
27
- if (nitrogen.CommandManager.obsoletes(downstreamMsg, upstreamMsg)) return true;
28
- };
29
-
30
- describe('commandManager', function() {
31
- it('should collapse obsolete messages', function(done) {
32
- var commandManager = new MockManager();
33
-
34
- var messages = [
35
- new nitrogen.Message({
36
- id: '1',
37
- type: 'cameraCommand',
38
- expires: new Date(2012,6,09,0,0,0),
39
- body: {
40
- command: 'snapshot'
41
- }
42
- }),
43
-
44
- new nitrogen.Message({
45
- id: '2',
46
- type: 'cameraCommand',
47
- expires: new Date(new Date().getTime() + 2 * 3600 * 1000),
48
- body: {
49
- command: 'snapshot',
50
- message: {
51
- tags: ['timeElapsed'],
52
- expires: 'never'
53
- }
54
- }
55
- })
56
- ];
57
-
58
- messages.forEach(function(message) { commandManager.process(message); });
59
-
60
- commandManager.collapse();
61
-
62
- assert.equal(commandManager.messageQueue.length, 1);
63
- assert.equal(commandManager.messageQueue[0].id, '2');
64
-
65
- done();
66
- });
67
- });
@@ -1,26 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('device', function() {
7
-
8
- it('should be able to create a device', function(done) {
9
- var service = new nitrogen.Service(config);
10
-
11
- var device = new nitrogen.Device({
12
- nickname: "camera",
13
- api_key: fixtures.models.userApiKey.key
14
- });
15
-
16
- service.connect(device, function(err, session, principal) {
17
- assert(!err);
18
-
19
- assert(principal.id);
20
- assert(principal.nickname);
21
-
22
- done();
23
- });
24
- });
25
-
26
- });
@@ -1,28 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('heartbeat', function() {
7
-
8
- it('should be able to send a heartbeat', function(done) {
9
- var service = new nitrogen.Service(config);
10
-
11
- service.connect(fixtures.models.camera, function(err, session, principal) {
12
- assert(!err);
13
-
14
- session.onMessage({ type: 'heartbeat' }, function(message) {
15
- if (message.from === session.principal.id) {
16
- done();
17
- }
18
- });
19
-
20
- setTimeout(function() {
21
- session.sendHeartbeat(function(err) {
22
- assert(!err);
23
- });
24
- }, 200);
25
- });
26
- });
27
-
28
- });
@@ -1,79 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('message', function() {
7
-
8
- it('should send a message and receive it over a subscription', function(done) {
9
- var service = new nitrogen.Service(config);
10
- var subscriptionPassed = false;
11
- var restPassed = false;
12
-
13
- service.connect(fixtures.models.camera, function(err, session) {
14
- assert.equal(err, null);
15
-
16
- var message = new nitrogen.Message({
17
- type: 'image',
18
- body: {
19
- url: 'http://localhost:3030/blobs/237849732497982'
20
- }
21
- });
22
-
23
- var subId = session.onMessage(function(message) {
24
- if (message.body.url !== 'http://localhost:3030/blobs/237849732497982') return;
25
-
26
- subscriptionPassed = true;
27
- session.disconnectSubscription(subId);
28
-
29
- if (subscriptionPassed && restPassed) done();
30
- });
31
-
32
- setTimeout(function() {
33
- message.send(session, function(err, messages) {
34
- assert.equal(err, null);
35
-
36
- messages.forEach(function(message) {
37
- assert.equal(message.body.url, 'http://localhost:3030/blobs/237849732497982');
38
- assert.notEqual(message.id, undefined);
39
- assert.equal(message.type, 'image');
40
- assert.notEqual(message.ts, undefined);
41
- assert.equal(typeof message.ts, 'object');
42
-
43
- // this should fail since session is not admin. just test making the request successfully
44
- // since service itself has tests to cover functionality.
45
- message.remove(session, function(err) {
46
- assert.equal(!err, false);
47
-
48
- restPassed = true;
49
- if (subscriptionPassed && restPassed) done();
50
- });
51
- });
52
-
53
- });
54
- }, 200);
55
- });
56
- });
57
-
58
- it('has a default constructor', function(done) {
59
- var service = new nitrogen.Service(config);
60
- service.connect(fixtures.models.camera, function(err, session) {
61
- var message = new nitrogen.Message();
62
- assert.notEqual(message.ts, null);
63
-
64
- done();
65
- });
66
- });
67
-
68
- it('find with no query returns all messages', function(done) {
69
- var service = new nitrogen.Service(config);
70
- service.connect(fixtures.models.camera, function(err, session) {
71
- nitrogen.Message.find(session, {}, { skip: 0, sort: { ts: 1 } }, function(err, messages) {
72
- assert(!err);
73
- assert.equal(messages.length > 0, true);
74
- done();
75
- });
76
- });
77
- });
78
-
79
- });
@@ -1,43 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('permission', function() {
7
-
8
- it('should be able to create, find, and remove permissions', function(done) {
9
- var service = new nitrogen.Service(config);
10
- service.connect(fixtures.models.camera, function(err, session) {
11
- var permission = new nitrogen.Permission({
12
- issued_to: fixtures.models.camera.id,
13
- principal_for: fixtures.models.camera.id,
14
- priority: 100000000,
15
- authorized: true
16
- });
17
-
18
- permission.create(session, function(err, permission) {
19
- assert(!err);
20
- assert.notEqual(permission.id, undefined);
21
-
22
- nitrogen.Permission.find(session, { issued_to: fixtures.models.camera.id }, {}, function(err, permissions) {
23
- assert(!err);
24
- var startingLength = permissions.length;
25
-
26
- assert.equal(startingLength, 2);
27
-
28
- permission.remove(session, function(err) {
29
- assert(!err);
30
-
31
- nitrogen.Permission.find(session, { issued_to: fixtures.models.camera.id }, {}, function(err, newPermissions) {
32
- assert(!err);
33
- var endingLength = newPermissions.length;
34
-
35
- assert.equal(endingLength, startingLength - 1);
36
- done();
37
- });
38
- });
39
- });
40
- });
41
- });
42
- });
43
- });
@@ -1,116 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('principal', function() {
7
- var service = new nitrogen.Service(config);
8
-
9
- it('find with no query returns all principals', function(done) {
10
- service.connect(fixtures.models.camera, function(err, session) {
11
- nitrogen.Principal.find(session, {}, {}, function(err, principals) {
12
- assert(!err);
13
- assert.equal(principals.length > 0, true);
14
- done();
15
- });
16
- });
17
- });
18
-
19
- it('find with device query returns device principals', function(done) {
20
- service.connect(fixtures.models.camera, function(err, session) {
21
- nitrogen.Principal.find(session, {
22
- type: "device"
23
- }, {
24
- skip: 0,
25
- sort: { last_connection: 1 }
26
- }, function(err, principals) {
27
- assert(!err);
28
- assert.equal(principals.length > 0, true);
29
- assert.equal(principals[0].type, "device");
30
- assert.notEqual(principals[0].toStoreId, undefined);
31
- done();
32
- });
33
- });
34
- });
35
-
36
- it('should be able to save principals', function(done) {
37
- service.connect(fixtures.models.camera, function(err, session, camera) {
38
- assert(!err);
39
-
40
- assert(camera.api_key);
41
-
42
- camera.name = "camera";
43
-
44
- var restFinished = false;
45
- var subscribeFinished = false;
46
-
47
- session.onPrincipal(function(principal) {
48
- assert.equal(principal.name, 'camera');
49
- assert.notEqual(principal.created_at, principal.updated_at);
50
-
51
- subscribeFinished = true;
52
- if (restFinished && subscribeFinished)
53
- done();
54
- });
55
-
56
- setTimeout(function() {
57
- camera.save(session, function(err, camera) {
58
- assert(!err);
59
- assert.equal(camera.name, "camera");
60
-
61
- restFinished = true;
62
- if (restFinished && subscribeFinished)
63
- done();
64
- });
65
- }, 100);
66
- });
67
- });
68
-
69
- it('should be able to remove a principal', function(done) {
70
- var cameraForDelete = new nitrogen.Device({
71
- nickname: "deleteCamera",
72
- api_key: fixtures.models.userApiKey.key
73
- });
74
-
75
- service.connect(cameraForDelete, function(err, session, cameraForDelete) {
76
- cameraForDelete.remove(session, function(err) {
77
- assert(!err);
78
-
79
- done();
80
- });
81
- });
82
- });
83
-
84
- it('should be able to fetch a single principal', function(done) {
85
- service.connect(fixtures.models.camera, function(err, session, camera) {
86
- assert(!err);
87
-
88
- nitrogen.Principal.findById(session, camera.id, function(err, principal) {
89
- assert(!err);
90
- assert.equal(principal.id, camera.id);
91
-
92
- done();
93
- });
94
- });
95
- });
96
-
97
- it('should be able to fetch an access token', function(done) {
98
- service.connect(fixtures.models.camera, function(err, session, camera) {
99
- assert(!err);
100
-
101
- nitrogen.Principal.accessTokenFor(session, camera.id, {
102
- expires: new Date(2019,1,1)
103
- }, function(err, accessToken) {
104
- assert(!err);
105
-
106
- assert.notEqual(accessToken, undefined);
107
-
108
- console.dir(accessToken);
109
-
110
- assert.equal(accessToken.expires_at, new Date(2019,1,1).toISOString());
111
-
112
- done();
113
- });
114
- });
115
- });
116
- });
@@ -1,92 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('service object', function() {
7
-
8
- var service = new nitrogen.Service(config);
9
-
10
- it('should be able to connect device', function(done) {
11
- service.connect(fixtures.models.camera, function(err, session, camera) {
12
- assert(!err);
13
- assert(session);
14
-
15
- session.log.info("i can successfully log too");
16
-
17
- done();
18
- });
19
- });
20
-
21
- it('should be able to authenticate user', function(done) {
22
- service.authenticate(fixtures.models.user, function(err, session, user) {
23
- assert(!err);
24
- assert(session);
25
- assert(user);
26
-
27
- done();
28
- });
29
- });
30
-
31
- it('camera should be able to impersonate itself', function(done) {
32
- service.connect(fixtures.models.camera, function(err, session, camera) {
33
- assert(!err);
34
- assert(session);
35
-
36
- session.impersonate(camera.id, function(err, impersonationSession) {
37
- assert(!err);
38
- assert(impersonationSession);
39
-
40
- done();
41
- });
42
- });
43
- });
44
-
45
- it('thermometer should be not be able to impersonate the camera', function(done) {
46
- var thermometer = new nitrogen.Device({
47
- nickname: "thermometer",
48
- api_key: fixtures.models.userApiKey.key
49
- });
50
-
51
- service.connect(thermometer, function(err, session, thermometer) {
52
- assert(!err);
53
- assert(session);
54
-
55
- session.impersonate(fixtures.models.camera.id, function(err, impersonationSession) {
56
- assert.equal(err.statusCode, 403);
57
- assert(err.message);
58
-
59
- done();
60
- });
61
- });
62
- });
63
-
64
- it('should be able to resume device session with valid accessToken', function(done) {
65
- var thermometer = new nitrogen.Device({
66
- nickname: "thermometer2",
67
- api_key: fixtures.models.userApiKey.key
68
- });
69
-
70
- service.connect(thermometer, function(err, session, thermometer) {
71
- assert(!err);
72
- assert(session);
73
-
74
- var resumedThermometer = new nitrogen.Principal({
75
- accessToken: {
76
- token: session.accessToken.token
77
- },
78
- id: thermometer.id,
79
- nickname: thermometer.nickname
80
- });
81
-
82
- service.resume(resumedThermometer, function(err, resumedSession) {
83
- assert(!err);
84
- assert(resumedSession);
85
-
86
- assert.equal(resumedSession.principal.id, thermometer.id);
87
-
88
- done();
89
- });
90
- });
91
- });
92
- });
@@ -1,97 +0,0 @@
1
- var assert = require('assert')
2
- , config = require('../config')
3
- , fixtures = require('../fixtures')
4
- , nitrogen = require('../../lib');
5
-
6
- describe('session', function() {
7
-
8
- var service = new nitrogen.Service(config);
9
-
10
- it('session should be JSON serializable', function(done) {
11
- service.connect(fixtures.models.camera, function(err, session) {
12
- assert(!err);
13
-
14
- // serializing a session with open subscriptions or heartbeats is not supported.
15
- session.socket = null;
16
- session.heartbeatTimeout = null;
17
-
18
- var sessionJSON = JSON.stringify(session);
19
- assert(sessionJSON);
20
-
21
- done();
22
- });
23
- });
24
-
25
- it('receiving a set-access-token header should update principal and session access token', function(done) {
26
-
27
- service.connect(fixtures.models.camera, function(err, session) {
28
- var resp = {
29
- headers: {
30
- "x-n2-set-access-token": JSON.stringify({
31
- token: session.accessToken.token,
32
- expires_at: new Date(2050, 1, 1),
33
- created_at: new Date(),
34
- id: '5250453b83dce2433d000008'
35
- })
36
- }
37
- };
38
-
39
- session.accessToken.token = 'notupdated';
40
-
41
- session.afterRequest(null, resp, null, function(err, resp, body) {
42
- assert.notEqual(session.accessToken.token, 'notupdated');
43
-
44
- done();
45
- });
46
- });
47
- });
48
-
49
- it('can establish permanent subscription and receive deferred messages', function(done) {
50
-
51
- service.connect(fixtures.models.camera, function(err, session) {
52
- assert(!err);
53
-
54
- // establish named subscription
55
- session.on({
56
- type: 'message',
57
- filter: { type: '_permSubTest' },
58
- name: 'permTest'
59
- }, function(message) {
60
- // session should be stopped and message should not be received here.
61
- assert(false);
62
- });
63
-
64
- setTimeout(function() {
65
-
66
- for (var id in session.subscriptions)
67
- session.disconnectSubscription(id);
68
-
69
- setTimeout(function() {
70
- service.connect(fixtures.models.camera, function(err, newSession) {
71
- assert(!err);
72
-
73
- // send message while we are disconnected.
74
- new nitrogen.Message({
75
- type: '_permSubTest'
76
- }).send(newSession);
77
-
78
- setTimeout(function() {
79
- // re-establish permanent subscription
80
- newSession.on({
81
- type: 'message',
82
- filter: { type: '_permSubTest' },
83
- name: 'permTest'
84
- }, function(message) {
85
- console.log("got message: " + JSON.stringify(message));
86
- // we should receive queued messages from when we were disconnected.
87
- if (message.type === '_permSubTest') {
88
- done();
89
- }
90
- });
91
- }, 200);
92
- });
93
- }, 200);
94
- }, 200);
95
- });
96
- });
97
- });