Esempio n. 1
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(),
     )
     self.assertRaises(ValidationError, key2.full_clean)
Esempio n. 2
0
 def test_same_name_different_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.user2,
         name='name',
         key=open(self.key2_path + '.pub').read(),
     )
     key2.full_clean()
     key2.save()
Esempio n. 3
0
 def test_ws_key_fails(self):
     key = UserKey(
         user=self.user1,
         name='name1',
         key='     ',
     )
     self.assertRaises(ValidationError, key.full_clean)
Esempio n. 4
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)
Esempio n. 5
0
 def test_invalid_key_fails(self):
     key = UserKey(
         user=self.user1,
         name='name',
         key='ssh-rsa invalid',
     )
     self.assertRaises(ValidationError, key.full_clean)
Esempio n. 6
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)
Esempio n. 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)
Esempio n. 8
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')
Esempio n. 9
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])
Esempio n. 10
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])
Esempio n. 11
0
 def test_fingerprint(self):
     fingerprint = ssh_fingerprint(self.key1_path + '.pub')
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     self.assertEqual(key.fingerprint, fingerprint)
Esempio n. 12
0
    def setUpClass(cls):
        super(UserKeyLookupTestCase, cls).setUpClass()
        cls.original_options = settings.SSHKEY_AUTHORIZED_KEYS_OPTIONS
        settings.SSHKEY_AUTHORIZED_KEYS_OPTIONS = \
            'command="{username} {key_id}"'
        cls.user1 = User.objects.create(username='******')
        cls.user2 = User.objects.create(username='******')

        cls.key1_path = os.path.join(cls.key_dir, 'key1')
        ssh_keygen(file=cls.key1_path)
        cls.key1 = UserKey(
            user=cls.user1,
            name='key1',
            key=open(cls.key1_path + '.pub').read(),
        )
        cls.key1.full_clean()
        cls.key1.save()

        cls.key2_path = os.path.join(cls.key_dir, 'key2')
        ssh_keygen(file=cls.key2_path)
        cls.key2 = UserKey(
            user=cls.user1,
            name='key2',
            key=open(cls.key2_path + '.pub').read(),
        )
        cls.key2.full_clean()
        cls.key2.save()

        cls.key3_path = os.path.join(cls.key_dir, 'key3')
        ssh_keygen(file=cls.key3_path)
        cls.key3 = UserKey(
            user=cls.user2,
            name='key3',
            key=open(cls.key3_path + '.pub').read(),
        )
        cls.key3.full_clean()
        cls.key3.save()

        cls.key4_path = os.path.join(cls.key_dir, 'key4')
        ssh_keygen(file=cls.key4_path)
Esempio n. 13
0
 def test_touch(self):
     import datetime
     key = UserKey(
         user=self.user1,
         name='name',
         key=open(self.key1_path + '.pub').read(),
     )
     key.full_clean()
     key.save()
     self.assertIsNone(key.last_used)
     key.touch()
     key.save()
     self.assertIsInstance(key.last_used, datetime.datetime)
     key.touch()
Esempio n. 14
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])
Esempio n. 15
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('django_sshkey.views.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_to_response(
        'sshkey/userkey_detail.html',
        {'form': form, 'action': 'add'},
        context_instance=RequestContext(request),
    )
Esempio n. 16
0
 def test_without_name_without_comment_fails(self):
     key = UserKey(
         user=self.user1,
         key=open(self.key2_path + '.pub').read(),
     )
     self.assertRaises(ValidationError, key.full_clean)