xref: /vim-8.2.3635/src/testdir/test_crypt.vim (revision 76cb6830)
1680e015bSBram Moolenaar" Tests for encryption.
21eceadafSBram Moolenaar
3b46fecd3SBram Moolenaarsource check.vim
4b46fecd3SBram MoolenaarCheckFeature cryptv
5680e015bSBram Moolenaar
6680e015bSBram Moolenaarfunc Common_head_only(text)
7680e015bSBram Moolenaar  " This was crashing Vim
8680e015bSBram Moolenaar  split Xtest.txt
9680e015bSBram Moolenaar  call setline(1, a:text)
10680e015bSBram Moolenaar  wq
11680e015bSBram Moolenaar  call feedkeys(":split Xtest.txt\<CR>foobar\<CR>", "tx")
12680e015bSBram Moolenaar  call delete('Xtest.txt')
13680e015bSBram Moolenaar  call assert_match('VimCrypt', getline(1))
14680e015bSBram Moolenaar  bwipe!
15680e015bSBram Moolenaarendfunc
16680e015bSBram Moolenaar
17680e015bSBram Moolenaarfunc Test_head_only_2()
18680e015bSBram Moolenaar  call Common_head_only('VimCrypt~02!abc')
19680e015bSBram Moolenaarendfunc
20680e015bSBram Moolenaar
21680e015bSBram Moolenaarfunc Test_head_only_3()
22680e015bSBram Moolenaar  call Common_head_only('VimCrypt~03!abc')
23680e015bSBram Moolenaarendfunc
2417777857SBram Moolenaar
2517777857SBram Moolenaarfunc Crypt_uncrypt(method)
2617777857SBram Moolenaar  exe "set cryptmethod=" . a:method
2717777857SBram Moolenaar  " If the blowfish test fails 'cryptmethod' will be 'zip' now.
2817777857SBram Moolenaar  call assert_equal(a:method, &cryptmethod)
2917777857SBram Moolenaar
3017777857SBram Moolenaar  split Xtest.txt
3117777857SBram Moolenaar  let text = ['01234567890123456789012345678901234567',
3217777857SBram Moolenaar	\ 'line 2  foo bar blah',
3317777857SBram Moolenaar	\ 'line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx']
3417777857SBram Moolenaar  call setline(1, text)
3517777857SBram Moolenaar  call feedkeys(":X\<CR>foobar\<CR>foobar\<CR>", 'xt')
36987411dbSBram Moolenaar  call assert_equal('*****', &key)
3717777857SBram Moolenaar  w!
3817777857SBram Moolenaar  bwipe!
3917777857SBram Moolenaar  call feedkeys(":split Xtest.txt\<CR>foobar\<CR>", 'xt')
4017777857SBram Moolenaar  call assert_equal(text, getline(1, 3))
4117777857SBram Moolenaar  set key= cryptmethod&
4217777857SBram Moolenaar  bwipe!
4317777857SBram Moolenaar  call delete('Xtest.txt')
4417777857SBram Moolenaarendfunc
4517777857SBram Moolenaar
4617777857SBram Moolenaarfunc Test_crypt_zip()
4717777857SBram Moolenaar  call Crypt_uncrypt('zip')
4817777857SBram Moolenaarendfunc
4917777857SBram Moolenaar
5017777857SBram Moolenaarfunc Test_crypt_blowfish()
5117777857SBram Moolenaar  call Crypt_uncrypt('blowfish')
5217777857SBram Moolenaarendfunc
5317777857SBram Moolenaar
5417777857SBram Moolenaarfunc Test_crypt_blowfish2()
5517777857SBram Moolenaar  call Crypt_uncrypt('blowfish2')
5617777857SBram Moolenaarendfunc
5717777857SBram Moolenaar
5817777857SBram Moolenaarfunc Uncrypt_stable(method, crypted_text, key, uncrypted_text)
5917777857SBram Moolenaar  split Xtest.txt
6017777857SBram Moolenaar  set bin noeol key= fenc=latin1
6117777857SBram Moolenaar  exe "set cryptmethod=" . a:method
6217777857SBram Moolenaar  call setline(1, a:crypted_text)
6317777857SBram Moolenaar  w!
6417777857SBram Moolenaar  bwipe!
6517777857SBram Moolenaar  set nobin
6617777857SBram Moolenaar  call feedkeys(":split Xtest.txt\<CR>" . a:key . "\<CR>", 'xt')
6717777857SBram Moolenaar  call assert_equal(a:uncrypted_text, getline(1, len(a:uncrypted_text)))
6817777857SBram Moolenaar  bwipe!
6917777857SBram Moolenaar  call delete('Xtest.txt')
7017777857SBram Moolenaar  set key=
7117777857SBram Moolenaarendfunc
7217777857SBram Moolenaar
7317777857SBram Moolenaarfunc Test_uncrypt_zip()
7417777857SBram Moolenaar  call Uncrypt_stable('zip', "VimCrypt~01!\u0006\u001clV'\u00de}Mg\u00a0\u00ea\u00a3V\u00a9\u00e7\u0007E#3\u008e2U\u00e9\u0097", "foofoo", ["1234567890", "aábbccddeëff"])
7517777857SBram Moolenaarendfunc
7617777857SBram Moolenaar
7717777857SBram Moolenaarfunc Test_uncrypt_blowfish()
7817777857SBram Moolenaar  call Uncrypt_stable('blowfish', "VimCrypt~02!k)\u00be\u0017\u0097#\u0016\u00ddS\u009c\u00f5=\u00ba\u00e0\u00c8#\u00a5M\u00b4\u0086J\u00c3A\u00cd\u00a5M\u00b4\u0086!\u0080\u0015\u009b\u00f5\u000f\u00e1\u00d2\u0019\u0082\u0016\u0098\u00f7\u000d\u00da", "barbar", ["asdfasdfasdf", "0001112223333"])
7917777857SBram Moolenaarendfunc
8017777857SBram Moolenaar
8117777857SBram Moolenaarfunc Test_uncrypt_blowfish2()
8217777857SBram Moolenaar  call Uncrypt_stable('blowfish', "VimCrypt~03!\u001e\u00d1N\u00e3;\u00d3\u00c0\u00a0^C)\u0004\u00f7\u007f.\u00b6\u00abF\u000eS\u0019\u00e0\u008b6\u00d2[T\u00cb\u00a7\u0085\u00d8\u00be9\u000b\u00812\u000bQ\u00b3\u00cc@\u0097\u000f\u00df\u009a\u00adIv\u00aa.\u00d8\u00c9\u00ee\u009e`\u00bd$\u00af%\u00d0", "barburp", ["abcdefghijklmnopqrstuvwxyz", "!@#$%^&*()_+=-`~"])
8317777857SBram Moolenaarendfunc
84987411dbSBram Moolenaar
85987411dbSBram Moolenaarfunc Test_uncrypt_unknown_method()
86987411dbSBram Moolenaar  split Xuncrypt_unknown.txt
87987411dbSBram Moolenaar  set bin noeol key= fenc=latin1
88987411dbSBram Moolenaar  call setline(1, "VimCrypt~93!\u001e\u00d1")
89987411dbSBram Moolenaar  w!
90987411dbSBram Moolenaar  bwipe!
91987411dbSBram Moolenaar  set nobin
92987411dbSBram Moolenaar  call assert_fails(":split Xuncrypt_unknown.txt", 'E821:')
93987411dbSBram Moolenaar
94987411dbSBram Moolenaar  bwipe!
95987411dbSBram Moolenaar  call delete('Xuncrypt_unknown.txt')
96987411dbSBram Moolenaar  set key=
97987411dbSBram Moolenaarendfunc
98987411dbSBram Moolenaar
99987411dbSBram Moolenaarfunc Test_crypt_key_mismatch()
100987411dbSBram Moolenaar  set cryptmethod=blowfish
101987411dbSBram Moolenaar
102987411dbSBram Moolenaar  split Xtest.txt
103987411dbSBram Moolenaar  call setline(1, 'nothing')
104987411dbSBram Moolenaar  call feedkeys(":X\<CR>foobar\<CR>nothing\<CR>", 'xt')
105987411dbSBram Moolenaar  call assert_match("Keys don't match!", execute(':2messages'))
106987411dbSBram Moolenaar  call assert_equal('', &key)
107987411dbSBram Moolenaar  call feedkeys("\<CR>\<CR>", 'xt')
108987411dbSBram Moolenaar
109987411dbSBram Moolenaar  set cryptmethod&
110987411dbSBram Moolenaar  bwipe!
111987411dbSBram Moolenaarendfunc
112987411dbSBram Moolenaar
113*76cb6830SBram Moolenaarfunc Test_crypt_set_key_changes_buffer()
114*76cb6830SBram Moolenaar
115*76cb6830SBram Moolenaar  new Xtest1.txt
116*76cb6830SBram Moolenaar  call setline(1, 'nothing')
117*76cb6830SBram Moolenaar  set cryptmethod=blowfish2
118*76cb6830SBram Moolenaar  call feedkeys(":X\<CR>foobar\<CR>foobar\<CR>", 'xt')
119*76cb6830SBram Moolenaar  call assert_fails(":q", "E37:")
120*76cb6830SBram Moolenaar  w
121*76cb6830SBram Moolenaar  set key=anotherkey
122*76cb6830SBram Moolenaar  call assert_fails(":bw")
123*76cb6830SBram Moolenaar  w
124*76cb6830SBram Moolenaar  call feedkeys(":X\<CR>foobar\<CR>foobar\<CR>", 'xt')
125*76cb6830SBram Moolenaar  call assert_fails(":bw")
126*76cb6830SBram Moolenaar  w
127*76cb6830SBram Moolenaar  let winnr = winnr()
128*76cb6830SBram Moolenaar  wincmd p
129*76cb6830SBram Moolenaar  call setwinvar(winnr, '&key', 'yetanotherkey')
130*76cb6830SBram Moolenaar  wincmd p
131*76cb6830SBram Moolenaar  call assert_fails(":bw")
132*76cb6830SBram Moolenaar  w
133*76cb6830SBram Moolenaar
134*76cb6830SBram Moolenaar  set cryptmethod&
135*76cb6830SBram Moolenaar  set key=
136*76cb6830SBram Moolenaar  bwipe!
137*76cb6830SBram Moolenaar  call delete('Xtest1.txt')
138*76cb6830SBram Moolenaarendfunc
139