Пример #1
0
 def test_malformed_key2_fails(self):
     key = UserKey(
         user=self.user1,
         name='name1',
         key='2048 01:02:03:04:05:06:07:08:09:10:11:12:13:14:15:16',
     )
     self.assertRaises(ValidationError, key.full_clean)
Пример #2
0
 def test_malformed_key_fails(self):
     key = UserKey(
         user=self.user1,
         name='name1',
         key='foo bar baz',
     )
     self.assertRaises(ValidationError, key.full_clean)
Пример #3
0
 def test_key_with_options_fails(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key='command="foobar" ' + open(self.key1_path + '.pub').read(),
     )
     self.assertRaises(ValidationError, key.full_clean)
Пример #4
0
 def test_invalid_key_fails(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key='ssh-rsa invalid',
     )
     self.assertRaises(ValidationError, key.full_clean)
Пример #5
0
 def test_private_key_fails(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_path).read(),
     )
     self.assertRaises(ValidationError, key.full_clean)
Пример #6
0
 def test_ws_key_fails(self):
     key = UserKey(
         user=self.user1,
         name='name1',
         key='     ',
     )
     self.assertRaises(ValidationError, key.full_clean)
Пример #7
0
 def test_multiple_keys_fails(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key=(open(self.key1_path + '.pub').read() +
              open(self.key2_path + '.pub').read()),
     )
     self.assertRaises(ValidationError, key.full_clean)
Пример #8
0
 def post(self, request):
     userkey = UserKey(user=request.user)
     userkey.request = request
     form = self.form_class(request.POST, instance=userkey)
     if form.is_valid():
         form.save()
         default_redirect = reverse(settings.USERKEY_LIST_URL)
         url = request.GET.get('next', default_redirect)
         if not is_safe_url(url=url, allowed_hosts=(request.get_host(), )):
             url = default_redirect
         message = 'SSH public key %s was added.' % userkey.name
         messages.success(request, message, fail_silently=True)
         return HttpResponseRedirect(url)
     return render(request,
                   'sshkey/userkey_detail.html',
                   context={
                       'form': form,
                       'action': 'add'
                   })
Пример #9
0
 def test_without_name_without_comment(self):
     key = UserKey(
         user=self.user1,
         key=open(self.key2_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
Пример #10
0
def userkey_add(request):
    if request.method == 'POST':
        userkey = UserKey(user=request.user)
        userkey.request = request
        form = UserKeyForm(request.POST, instance=userkey)
        if form.is_valid():
            form.save()
            default_redirect = reverse('simplesshkey:userkey_list')
            url = request.GET.get('next', default_redirect)
            if not is_safe_url(url=url, host=request.get_host()):
                url = default_redirect
            message = 'SSH public key %s was added.' % userkey.name
            messages.success(request, message, fail_silently=True)
            return HttpResponseRedirect(url)
    else:
        form = UserKeyForm()
    return render(request,
                  'sshkey/userkey_detail.html',
                  context={
                      'form': form,
                      'action': 'add'
                  })
Пример #11
0
 def test_without_name_with_comment(self):
     key = UserKey(
         user=self.user1,
         key=open(self.key1_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     self.assertEqual(key.name, 'comment')
Пример #12
0
 def test_ed25519(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key4_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     self.assertEqual(key.keytype, 'ssh-ed25519')
Пример #13
0
 def test_ecdsa(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key3_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     self.assertEqual(key.keytype, 'ecdsa-sha2-nistp256')
Пример #14
0
 def test_empty_key(self):
     key = UserKey(
         user=self.user1,
         name='',
         key='',
     )
     key.full_clean(exclude=['key'])
     key.save()
     self.assertEqual(key.key, '')
Пример #15
0
 def test_import(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_pem_path).read(),
     )
     key.full_clean()
     key.save()
     self.assertEqual(key.key.split()[:2],
                      open(self.key1_path + '.pub').read().split()[:2])
Пример #16
0
 def test_import_without_comment(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key2_rfc4716_path).read(),
     )
     key.full_clean()
     key.save()
     self.assertEqual(key.key.split()[:2],
                      open(self.key2_path + '.pub').read().split()[:2])
Пример #17
0
 def test_fingerprint_md5(self):
     settings.SSHKEY_DEFAULT_HASH = 'md5'
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     self.assertTrue(key.fingerprint.startswith('MD5:'))
Пример #18
0
 def test_fingerprint_legacy(self):
     settings.SSHKEY_DEFAULT_HASH = 'legacy'
     fingerprint = ssh_fingerprint(self.key1_path + '.pub', hash='legacy')
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     self.assertEqual(key.fingerprint, fingerprint)
Пример #19
0
 def test_export(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     export_path = os.path.join(self.key_dir, 'export')
     import_path = os.path.join(self.key_dir, 'import')
     with open(export_path, 'w') as f:
         f.write(key.export('PEM'))
     ssh_key_import(export_path, import_path, 'PEM')
     self.assertEqual(open(import_path).read().split()[:2],
                      open(self.key1_path + '.pub').read().split()[:2])
Пример #20
0
 def test_same_key_different_user(self):
     key1 = UserKey(
         user=self.user1,
         name='name1',
         key=open(self.key1_path + '.pub').read(),
     )
     key1.full_clean()
     key1.save()
     key2 = UserKey(
         user=self.user2,
         name='name2',
         key=open(self.key1_path + '.pub').read(),
     )
     key2.full_clean()
     key2.save()
Пример #21
0
 def test_same_name_same_user(self):
     key1 = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_path + '.pub').read(),
     )
     key1.full_clean()
     key1.save()
     key2 = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key2_path + '.pub').read(),
     )
     key2.full_clean()
     key2.save()