1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const fs = require("fs-extra");
|
4 | const lex_1 = require("./lex");
|
5 | fs.mkdirpSync('tmp');
|
6 | test('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 | });
|
17 | test('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 | });
|
25 | test('comment', () => {
|
26 | const tokens = lex_1.default(`
|
27 |
|
28 | # foo
|
29 |
|
30 | machine 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 | });
|
43 | test('bad default order', () => {
|
44 | const tokens = lex_1.default(`
|
45 | # I am a comment
|
46 | machine mail.google.com
|
47 | login joe@gmail.com
|
48 | account gmail
|
49 | password somethingSecret
|
50 | # I am another comment
|
51 |
|
52 | default
|
53 | \tlogin anonymous
|
54 | \tpassword joe@example.com
|
55 |
|
56 | machine 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 | });
|
75 | test('macdef', () => {
|
76 | const tokens = lex_1.default(`# I am a comment
|
77 | machine mail.google.com
|
78 | login joe@gmail.com
|
79 | account gmail
|
80 | password somethingSecret
|
81 | # I am another comment
|
82 |
|
83 | macdef
|
84 | foo
|
85 | barbaaz
|
86 |
|
87 | machine 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 | });
|