summaryrefslogtreecommitdiffstats
path: root/node_modules/saslprep/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/saslprep/test')
-rw-r--r--node_modules/saslprep/test/index.js76
-rw-r--r--node_modules/saslprep/test/util.js16
2 files changed, 92 insertions, 0 deletions
diff --git a/node_modules/saslprep/test/index.js b/node_modules/saslprep/test/index.js
new file mode 100644
index 0000000..80c71af
--- /dev/null
+++ b/node_modules/saslprep/test/index.js
@@ -0,0 +1,76 @@
+'use strict';
+
+const saslprep = require('..');
+
+const chr = String.fromCodePoint;
+
+test('should work with liatin letters', () => {
+ const str = 'user';
+ expect(saslprep(str)).toEqual(str);
+});
+
+test('should work be case preserved', () => {
+ const str = 'USER';
+ expect(saslprep(str)).toEqual(str);
+});
+
+test('should work with high code points (> U+FFFF)', () => {
+ const str = '\uD83D\uDE00';
+ expect(saslprep(str, { allowUnassigned: true })).toEqual(str);
+});
+
+test('should remove `mapped to nothing` characters', () => {
+ expect(saslprep('I\u00ADX')).toEqual('IX');
+});
+
+test('should replace `Non-ASCII space characters` with space', () => {
+ expect(saslprep('a\u00A0b')).toEqual('a\u0020b');
+});
+
+test('should normalize as NFKC', () => {
+ expect(saslprep('\u00AA')).toEqual('a');
+ expect(saslprep('\u2168')).toEqual('IX');
+});
+
+test('should throws when prohibited characters', () => {
+ // C.2.1 ASCII control characters
+ expect(() => saslprep('a\u007Fb')).toThrow();
+
+ // C.2.2 Non-ASCII control characters
+ expect(() => saslprep('a\u06DDb')).toThrow();
+
+ // C.3 Private use
+ expect(() => saslprep('a\uE000b')).toThrow();
+
+ // C.4 Non-character code points
+ expect(() => saslprep(`a${chr(0x1fffe)}b`)).toThrow();
+
+ // C.5 Surrogate codes
+ expect(() => saslprep('a\uD800b')).toThrow();
+
+ // C.6 Inappropriate for plain text
+ expect(() => saslprep('a\uFFF9b')).toThrow();
+
+ // C.7 Inappropriate for canonical representation
+ expect(() => saslprep('a\u2FF0b')).toThrow();
+
+ // C.8 Change display properties or are deprecated
+ expect(() => saslprep('a\u200Eb')).toThrow();
+
+ // C.9 Tagging characters
+ expect(() => saslprep(`a${chr(0xe0001)}b`)).toThrow();
+});
+
+test('should not containt RandALCat and LCat bidi', () => {
+ expect(() => saslprep('a\u06DD\u00AAb')).toThrow();
+});
+
+test('RandALCat should be first and last', () => {
+ expect(() => saslprep('\u0627\u0031\u0628')).not.toThrow();
+ expect(() => saslprep('\u0627\u0031')).toThrow();
+});
+
+test('should handle unassigned code points', () => {
+ expect(() => saslprep('a\u0487')).toThrow();
+ expect(() => saslprep('a\u0487', { allowUnassigned: true })).not.toThrow();
+});
diff --git a/node_modules/saslprep/test/util.js b/node_modules/saslprep/test/util.js
new file mode 100644
index 0000000..355db3f
--- /dev/null
+++ b/node_modules/saslprep/test/util.js
@@ -0,0 +1,16 @@
+'use strict';
+
+const { setFlagsFromString } = require('v8');
+const { range } = require('../lib/util');
+
+// 984 by default.
+setFlagsFromString('--stack_size=500');
+
+test('should work', () => {
+ const list = range(1, 3);
+ expect(list).toEqual([1, 2, 3]);
+});
+
+test('should work for large ranges', () => {
+ expect(() => range(1, 1e6)).not.toThrow();
+});