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)
def test_malformed_key_fails(self): key = UserKey( user=self.user1, name='name1', key='foo bar baz', ) self.assertRaises(ValidationError, key.full_clean)
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)
def test_invalid_key_fails(self): key = UserKey( user=self.user1, name='name', key='ssh-rsa invalid', ) self.assertRaises(ValidationError, key.full_clean)
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)
def test_ws_key_fails(self): key = UserKey( user=self.user1, name='name1', key=' ', ) self.assertRaises(ValidationError, key.full_clean)
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)
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' })
def test_without_name_without_comment(self): key = UserKey( user=self.user1, key=open(self.key2_path + '.pub').read(), ) key.full_clean() key.save()
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' })
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')
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')
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')
def test_empty_key(self): key = UserKey( user=self.user1, name='', key='', ) key.full_clean(exclude=['key']) key.save() self.assertEqual(key.key, '')
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])
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])
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:'))
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)
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])
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()
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()