Statistics
| Branch: | Tag: | Revision:

root / cloudcms / tests / __init__.py @ b295ae41

History | View | Annotate | Download (4 kB)

1 e4551231 Kostas Papadimitriou
# Copyright 2012 GRNET S.A. All rights reserved.
2 e4551231 Kostas Papadimitriou
#
3 e4551231 Kostas Papadimitriou
# Redistribution and use in source and binary forms, with or
4 e4551231 Kostas Papadimitriou
# without modification, are permitted provided that the following
5 e4551231 Kostas Papadimitriou
# conditions are met:
6 e4551231 Kostas Papadimitriou
#
7 e4551231 Kostas Papadimitriou
#   1. Redistributions of source code must retain the above
8 e4551231 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
9 e4551231 Kostas Papadimitriou
#      disclaimer.
10 e4551231 Kostas Papadimitriou
#
11 e4551231 Kostas Papadimitriou
#   2. Redistributions in binary form must reproduce the above
12 e4551231 Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
13 e4551231 Kostas Papadimitriou
#      disclaimer in the documentation and/or other materials
14 e4551231 Kostas Papadimitriou
#      provided with the distribution.
15 e4551231 Kostas Papadimitriou
#
16 e4551231 Kostas Papadimitriou
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 e4551231 Kostas Papadimitriou
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 e4551231 Kostas Papadimitriou
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 e4551231 Kostas Papadimitriou
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 e4551231 Kostas Papadimitriou
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 e4551231 Kostas Papadimitriou
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 e4551231 Kostas Papadimitriou
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 e4551231 Kostas Papadimitriou
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 e4551231 Kostas Papadimitriou
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 e4551231 Kostas Papadimitriou
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 e4551231 Kostas Papadimitriou
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 e4551231 Kostas Papadimitriou
# POSSIBILITY OF SUCH DAMAGE.
28 e4551231 Kostas Papadimitriou
#
29 e4551231 Kostas Papadimitriou
# The views and conclusions contained in the software and
30 e4551231 Kostas Papadimitriou
# documentation are those of the authors and should not be
31 e4551231 Kostas Papadimitriou
# interpreted as representing official policies, either expressed
32 e4551231 Kostas Papadimitriou
# or implied, of GRNET S.A.
33 e4551231 Kostas Papadimitriou
34 e4551231 Kostas Papadimitriou
35 e4551231 Kostas Papadimitriou
import os
36 e4551231 Kostas Papadimitriou
import tempfile
37 e4551231 Kostas Papadimitriou
38 e4551231 Kostas Papadimitriou
from django.test import TestCase, TransactionTestCase
39 e4551231 Kostas Papadimitriou
from django.contrib.auth.models import User
40 e4551231 Kostas Papadimitriou
from django.core.files.uploadedfile import SimpleUploadedFile
41 e4551231 Kostas Papadimitriou
42 e4551231 Kostas Papadimitriou
from feincms.module.medialibrary.models import Category as MediaCategory, \
43 e4551231 Kostas Papadimitriou
        MediaFile
44 e4551231 Kostas Papadimitriou
45 e4551231 Kostas Papadimitriou
from cloudcmsguide.models import UserGuideEntry
46 e4551231 Kostas Papadimitriou
from cloudcmsfaq.models import Category, Question
47 e4551231 Kostas Papadimitriou
from cloudcms.rstutils import generate_rst_contents_from_dir
48 e4551231 Kostas Papadimitriou
from cloudcms.models import Service, ServiceTranslation
49 e4551231 Kostas Papadimitriou
from cloudcms.forms import RstZipImportForm
50 e4551231 Kostas Papadimitriou
51 e4551231 Kostas Papadimitriou
from synnefo.lib.log import initialize_logging
52 e4551231 Kostas Papadimitriou
53 e4551231 Kostas Papadimitriou
from django.conf import settings
54 e4551231 Kostas Papadimitriou
55 e4551231 Kostas Papadimitriou
initialize_logging()
56 e4551231 Kostas Papadimitriou
57 e4551231 Kostas Papadimitriou
TESTS_BASE = os.path.abspath(os.path.dirname(__file__))
58 e4551231 Kostas Papadimitriou
59 e4551231 Kostas Papadimitriou
TEST_DIR1 = os.path.join(TESTS_BASE, 'userdocs1')
60 e4551231 Kostas Papadimitriou
TEST_DIR2 = os.path.join(TESTS_BASE, 'userdocs2')
61 e4551231 Kostas Papadimitriou
62 e4551231 Kostas Papadimitriou
TEST_INVALID_ZIP = os.path.join(TESTS_BASE, 'invalidzip.zip')
63 e4551231 Kostas Papadimitriou
TEST_VALID_ZIP = os.path.join(TESTS_BASE, 'okeanos-user-docs.zip')
64 e4551231 Kostas Papadimitriou
TEST_VALID_ZIP = os.path.join(TESTS_BASE, 'userdocs1.zip')
65 e4551231 Kostas Papadimitriou
66 e4551231 Kostas Papadimitriou
settings.MEDIA_ROOT = tempfile.mkdtemp("cms-tests")
67 e4551231 Kostas Papadimitriou
68 e4551231 Kostas Papadimitriou
class TestSphinxImport(TransactionTestCase):
69 e4551231 Kostas Papadimitriou
70 e4551231 Kostas Papadimitriou
    fixtures = ['cloudcms_media_categories', 'cloudcms_default_services']
71 e4551231 Kostas Papadimitriou
72 e4551231 Kostas Papadimitriou
    def setUp(self):
73 e4551231 Kostas Papadimitriou
        c = Category.objects.create()
74 e4551231 Kostas Papadimitriou
        self.user = User.objects.create(username="admin", email="admin@admin.com")
75 e4551231 Kostas Papadimitriou
        self.user.is_superuser = True
76 e4551231 Kostas Papadimitriou
        self.user.set_password("test")
77 e4551231 Kostas Papadimitriou
        self.user.save()
78 e4551231 Kostas Papadimitriou
79 e4551231 Kostas Papadimitriou
    def test_from_dir1(self):
80 e4551231 Kostas Papadimitriou
        zipfile = SimpleUploadedFile('file.zip', file(TEST_VALID_ZIP).read())
81 e4551231 Kostas Papadimitriou
        form = RstZipImportForm({'import_categories': ['faqs', 'guide']}, files={'import_file': zipfile})
82 e4551231 Kostas Papadimitriou
        form.is_valid()
83 e4551231 Kostas Papadimitriou
        form.save(self.user, TEST_DIR1)
84 e4551231 Kostas Papadimitriou
85 e4551231 Kostas Papadimitriou
        self.assertEqual(MediaFile.objects.all().count(), 5)
86 e4551231 Kostas Papadimitriou
        self.assertEqual(Question.objects.all().count(), 4)
87 e4551231 Kostas Papadimitriou
        self.assertEqual(UserGuideEntry.objects.all().count(), 3)
88 e4551231 Kostas Papadimitriou
89 e4551231 Kostas Papadimitriou
    def test_form(self):
90 e4551231 Kostas Papadimitriou
        zipfile = SimpleUploadedFile('file.zip', file(TEST_INVALID_ZIP).read())
91 e4551231 Kostas Papadimitriou
        form = RstZipImportForm({'import_categories': ['faqs', 'guide']}, files={'import_file': zipfile})
92 e4551231 Kostas Papadimitriou
        self.assertEqual(form.is_valid(), False)
93 e4551231 Kostas Papadimitriou
94 e4551231 Kostas Papadimitriou
        zipfile = SimpleUploadedFile('file.zip', file(TEST_VALID_ZIP).read())
95 e4551231 Kostas Papadimitriou
        form = RstZipImportForm({'import_categories': ['faqs', 'guide']}, files={'import_file': zipfile})
96 e4551231 Kostas Papadimitriou
        self.assertEqual(form.is_valid(), True)
97 e4551231 Kostas Papadimitriou
98 e4551231 Kostas Papadimitriou
        form.save(self.user)
99 e4551231 Kostas Papadimitriou
        self.assertEqual(MediaFile.objects.all().count(), 5)
100 e4551231 Kostas Papadimitriou
        self.assertEqual(Question.objects.all().count(), 4)
101 e4551231 Kostas Papadimitriou
        self.assertEqual(UserGuideEntry.objects.all().count(), 3)