From bac19e6567a100b3fd19865da68a31e306777858 Mon Sep 17 00:00:00 2001
From: Dudás Ádám <sir.dudas.adam@gmail.com>
Date: Sat, 13 Jul 2013 15:26:42 +0200
Subject: [PATCH] one: new tests

---
 one/tests/test_models.py | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 86 insertions(+), 2 deletions(-)

diff --git a/one/tests/test_models.py b/one/tests/test_models.py
index 599d506..72723ad 100644
--- a/one/tests/test_models.py
+++ b/one/tests/test_models.py
@@ -1,8 +1,15 @@
 from datetime import datetime, timedelta
-from django.test import TestCase
+from mock import Mock
+from nose import with_setup
+from nose.tools import raises
 from django.contrib.auth.models import User
-from ..models import Disk, Instance, InstanceType, Network, Share, Template
+from django.core.exceptions import ValidationError
+from django.test import TestCase
+from ..models import (Disk, Instance, InstanceType, Network, Share,
+                      Template, set_quota, reset_keys, OpenSshKeyValidator)
+from ..util import keygen
 from school.models import Course, Group, Semester
+from store.api import StoreApi
 
 
 class UserCloudDetailsTestCase(TestCase):
@@ -99,3 +106,80 @@ class UserCloudDetailsTestCase(TestCase):
         self.userdetails.share_quota = 0
         self.userdetails.save()
         self.assertEqual(100, self.userdetails.get_share_pc())
+
+
+def create_user():
+    return User.objects.create(username="testuser", password="testpass",
+                               email="test@mail.com", first_name="Test",
+                               last_name="User")
+
+
+def delete_user():
+    User.objects.filter(username="testuser").delete()
+
+
+@with_setup(create_user, delete_user)
+def test_set_quota():
+    user = User.objects.get(username="testuser")
+    details = user.cloud_details
+    set_quota(None, details, None)
+    assert StoreApi.userexist(user.username)
+    # TODO check quota value
+
+
+@with_setup(create_user, delete_user)
+def test_reset_keys_when_created():
+    mock_details = Mock()
+    mock_details.reset_smb = Mock(return_value=None)
+    mock_details.reset_ssh_keys = Mock(return_value=None)
+    reset_keys(None, mock_details, True)
+    mock_details.reset_smb.assert_called_once_with()
+    mock_details.reset_ssh_keys.assert_called_once_with()
+
+
+@with_setup(create_user, delete_user)
+def test_reset_keys_when_not_created():
+    mock_details = Mock()
+    mock_details.reset_smb = Mock(return_value=None)
+    mock_details.reset_ssh_keys = Mock(return_value=None)
+    reset_keys(None, mock_details, False)
+    assert not mock_details.reset_smb.called
+    assert not mock_details.reset_ssh_keys.called
+
+
+def test_OpenSshKeyValidator_init_with_types():
+    key_types = ['my-key-type']
+    validator = OpenSshKeyValidator(types=key_types)
+    assert validator.valid_types == key_types
+
+
+def test_OpenSshKeyValidator_with_valid_key():
+    validator = OpenSshKeyValidator()
+    _, public_key = keygen()
+    validator(public_key)
+
+
+@raises(ValidationError)
+def test_OpenSshKeyValidator_with_empty_string_as_key():
+    validator = OpenSshKeyValidator()
+    public_key = ""
+    validator(public_key)
+
+
+@raises(ValidationError)
+def test_OpenSshKeyValidator_with_invalid_key_type():
+    validator = OpenSshKeyValidator()
+    _, public_key = keygen()
+    _key_type, rest = public_key.split(None, 1)
+    public_key = 'my-key-type ' + rest
+    validator(public_key)
+
+
+@raises(ValidationError)
+def test_OpenSshKeyValidator_with_invalid_key_data():
+    validator = OpenSshKeyValidator()
+    _, public_key = keygen()
+    key_parts = public_key.split(None, 2)
+    key_parts[1] = key_parts[1][1:]
+    public_key = ' '.join(key_parts)
+    validator(public_key)
--
libgit2 0.26.0