UNPKG

4.19 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const fs = require("fs-extra");
4const lex_1 = require("./lex");
5fs.mkdirpSync('tmp');
6test('simple', () => {
7 const tokens = lex_1.default(`machine mail.google.com
8 login joe@gmail.com
9 password somethingSecret
10`);
11 expect(tokens).toEqual([
12 { type: 'machine', _tokens: [], host: 'mail.google.com', pre: '', post: '\n' },
13 { type: 'prop', name: 'login', value: 'joe@gmail.com', pre: ' ', post: '\n' },
14 { type: 'prop', name: 'password', value: 'somethingSecret', pre: ' ', post: '\n' },
15 ]);
16});
17test('singleline', () => {
18 const tokens = lex_1.default(`machine mail.google.com login joe@gmail.com password somethingSecret`);
19 expect(tokens).toEqual([
20 { type: 'machine', _tokens: [], host: 'mail.google.com', pre: '', post: '' },
21 { type: 'prop', name: 'login', value: 'joe@gmail.com', pre: ' ', post: '' },
22 { type: 'prop', name: 'password', value: 'somethingSecret', pre: ' ', post: '\n' },
23 ]);
24});
25test('comment', () => {
26 const tokens = lex_1.default(`
27
28# foo
29
30machine mail.google.com
31 login joe@gmail.com # bar
32 password somethingSecret
33`);
34 expect(tokens).toEqual([
35 { type: 'comment', content: '\n\n# foo\n' },
36 { type: 'newline', content: '\n' },
37 { type: 'machine', _tokens: [], host: 'mail.google.com', pre: '', post: '\n' },
38 { type: 'prop', name: 'login', value: 'joe@gmail.com', pre: ' ', post: '' },
39 { type: 'comment', content: ' # bar\n' },
40 { type: 'prop', name: 'password', value: 'somethingSecret', pre: ' ', post: '\n' },
41 ]);
42});
43test('bad default order', () => {
44 const tokens = lex_1.default(`
45# I am a comment
46machine mail.google.com
47 login joe@gmail.com
48 account gmail
49 password somethingSecret
50# I am another comment
51
52default
53\tlogin anonymous
54\tpassword joe@example.com
55
56machine ray login demo password mypassword
57`);
58 expect(tokens).toEqual([
59 { type: 'comment', content: '\n# I am a comment\n' },
60 { type: 'machine', _tokens: [], host: 'mail.google.com', pre: '', post: '\n' },
61 { type: 'prop', name: 'login', value: 'joe@gmail.com', pre: ' ', post: '\n' },
62 { type: 'prop', name: 'account', value: 'gmail', pre: ' ', post: '\n' },
63 { type: 'prop', name: 'password', value: 'somethingSecret', pre: ' ', post: '\n' },
64 { type: 'comment', content: '# I am another comment\n' },
65 { type: 'newline', content: '\n' },
66 { type: 'default', _tokens: [], pre: '', post: '\n' },
67 { type: 'prop', name: 'login', value: 'anonymous', pre: '\t', post: '\n' },
68 { type: 'prop', name: 'password', value: 'joe@example.com', pre: '\t', post: '\n' },
69 { type: 'newline', content: '\n' },
70 { type: 'machine', _tokens: [], host: 'ray', pre: '', post: '' },
71 { type: 'prop', name: 'login', value: 'demo', pre: ' ', post: '' },
72 { type: 'prop', name: 'password', value: 'mypassword', pre: ' ', post: '\n' },
73 ]);
74});
75test('macdef', () => {
76 const tokens = lex_1.default(`# I am a comment
77machine mail.google.com
78 login joe@gmail.com
79 account gmail
80 password somethingSecret
81# I am another comment
82
83macdef
84foo
85barbaaz
86
87machine ray login demo password mypassword
88`);
89 expect(tokens).toEqual([
90 { type: 'comment', content: '# I am a comment\n' },
91 { type: 'machine', _tokens: [], host: 'mail.google.com', pre: '', post: '\n' },
92 { type: 'prop', name: 'login', value: 'joe@gmail.com', pre: ' ', post: '\n' },
93 { type: 'prop', name: 'account', value: 'gmail', pre: ' ', post: '\n' },
94 { type: 'prop', name: 'password', value: 'somethingSecret', pre: ' ', post: '\n' },
95 { type: 'comment', content: '# I am another comment\n' },
96 { type: 'newline', content: '\n' },
97 { type: 'macdef', content: 'macdef\nfoo\nbarbaaz\n' },
98 { type: 'newline', content: '\n' },
99 { type: 'machine', _tokens: [], host: 'ray', pre: '', post: '' },
100 { type: 'prop', name: 'login', value: 'demo', pre: ' ', post: '' },
101 { type: 'prop', name: 'password', value: 'mypassword', pre: ' ', post: '\n' },
102 ]);
103});