Revision a9d34f3b snf-cyclades-app/synnefo/userdata/tests.py

b/snf-cyclades-app/synnefo/userdata/tests.py
38 38
from django.test.client import Client
39 39
from django.utils import simplejson as json
40 40
from django.core.urlresolvers import reverse
41
from django.core.validators import MaxLengthValidator
42

  
43
from snf_django.utils.testing import with_settings
44

  
41 45
from mock import patch
42 46

  
43
from synnefo.userdata.models import PublicKeyPair
47
from synnefo.userdata.models import PublicKeyPair, SSH_KEY_MAX_CONTENT_LENGTH
44 48

  
45 49

  
46 50
def get_user_mock(request, *args, **kwargs):
......
88 92
        self.user = 'test'
89 93
        self.keys_url = reverse('ui_keys_collection')
90 94

  
95
    def test_key_content_length_limit(self):
96
        # patch validator
97
        PublicKeyPair._meta.fields[3].validators = [MaxLengthValidator(10)]
98
        resp = self.client.post(self.keys_url,
99
                                json.dumps({'name': 'key pair 2',
100
                                            'content': """0123456789+"""}),
101
                                content_type='application/json')
102
        self.assertEqual(resp.status_code, 422)
103
        resp = json.loads(resp.content)
104
        assert 'errors' in resp
105
        assert 'content' in resp['errors']
106
        self.assertEqual(PublicKeyPair.objects.count(), 0)
107
        PublicKeyPair._meta.fields[3].validators = \
108
            [MaxLengthValidator(SSH_KEY_MAX_CONTENT_LENGTH)]
109

  
91 110
    def test_keys_collection_get(self):
92 111
        resp = self.client.get(self.keys_url)
93 112
        self.assertEqual(resp.content, "[]")
......
201 220
                                json.dumps({'content': """key 2 content"""}),
202 221
                                content_type='application/json')
203 222

  
204
        self.assertEqual(resp.status_code, 500)
223
        self.assertEqual(resp.status_code, 422)
205 224
        self.assertEqual(resp.content,
206 225
                         """{"non_field_key": "__all__", "errors": """
207 226
                         """{"name": ["This field cannot be blank."]}}""")
......
221 240
                                json.dumps({'name': 'key1',
222 241
                                            'content': """key 1 content"""}),
223 242
                                content_type='application/json')
224
        self.assertEqual(resp.status_code, 500)
243
        self.assertEqual(resp.status_code, 422)
225 244
        self.assertEqual(resp.content,
226 245
                         """{"non_field_key": "__all__", "errors": """
227 246
                         """{"__all__": ["SSH keys limit exceeded."]}}""")

Also available in: Unified diff