Statistics
| Branch: | Tag: | Revision:

root / other / astakos-test @ 812b389c

History | View | Annotate | Download (3.9 kB)

1 812b389c Sofia Papagiannaki
#!/usr/bin/env python
2 812b389c Sofia Papagiannaki
#coding=utf8
3 812b389c Sofia Papagiannaki
4 812b389c Sofia Papagiannaki
# Copyright 2011-2012 GRNET S.A. All rights reserved.
5 812b389c Sofia Papagiannaki
# 
6 812b389c Sofia Papagiannaki
# Redistribution and use in source and binary forms, with or
7 812b389c Sofia Papagiannaki
# without modification, are permitted provided that the following
8 812b389c Sofia Papagiannaki
# conditions are met:
9 812b389c Sofia Papagiannaki
# 
10 812b389c Sofia Papagiannaki
#   1. Redistributions of source code must retain the above
11 812b389c Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
12 812b389c Sofia Papagiannaki
#      disclaimer.
13 812b389c Sofia Papagiannaki
# 
14 812b389c Sofia Papagiannaki
#   2. Redistributions in binary form must reproduce the above
15 812b389c Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
16 812b389c Sofia Papagiannaki
#      disclaimer in the documentation and/or other materials
17 812b389c Sofia Papagiannaki
#      provided with the distribution.
18 812b389c Sofia Papagiannaki
# 
19 812b389c Sofia Papagiannaki
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
20 812b389c Sofia Papagiannaki
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 812b389c Sofia Papagiannaki
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 812b389c Sofia Papagiannaki
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
23 812b389c Sofia Papagiannaki
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 812b389c Sofia Papagiannaki
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 812b389c Sofia Papagiannaki
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 812b389c Sofia Papagiannaki
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 812b389c Sofia Papagiannaki
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 812b389c Sofia Papagiannaki
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 812b389c Sofia Papagiannaki
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 812b389c Sofia Papagiannaki
# POSSIBILITY OF SUCH DAMAGE.
31 812b389c Sofia Papagiannaki
# 
32 812b389c Sofia Papagiannaki
# The views and conclusions contained in the software and
33 812b389c Sofia Papagiannaki
# documentation are those of the authors and should not be
34 812b389c Sofia Papagiannaki
# interpreted as representing official policies, either expressed
35 812b389c Sofia Papagiannaki
# or implied, of GRNET S.A.
36 812b389c Sofia Papagiannaki
37 812b389c Sofia Papagiannaki
38 812b389c Sofia Papagiannaki
#from pithos.lib.client import Pithos_Client, Fault
39 812b389c Sofia Papagiannaki
#from pithos.lib.util import get_user, get_auth, get_server, get_api
40 812b389c Sofia Papagiannaki
#
41 812b389c Sofia Papagiannaki
#from xml.dom import minidom
42 812b389c Sofia Papagiannaki
#from StringIO import StringIO
43 812b389c Sofia Papagiannaki
#from hashlib import new as newhasher
44 812b389c Sofia Papagiannaki
#from binascii import hexlify
45 812b389c Sofia Papagiannaki
#
46 812b389c Sofia Papagiannaki
#import json
47 812b389c Sofia Papagiannaki
import unittest
48 812b389c Sofia Papagiannaki
#import time as _time
49 812b389c Sofia Papagiannaki
#import types
50 812b389c Sofia Papagiannaki
#import hashlib
51 812b389c Sofia Papagiannaki
#import mimetypes
52 812b389c Sofia Papagiannaki
#import random
53 812b389c Sofia Papagiannaki
#import datetime
54 812b389c Sofia Papagiannaki
#import string
55 812b389c Sofia Papagiannaki
#import re
56 812b389c Sofia Papagiannaki
#
57 812b389c Sofia Papagiannaki
58 812b389c Sofia Papagiannaki
import httplib
59 812b389c Sofia Papagiannaki
import os
60 812b389c Sofia Papagiannaki
61 812b389c Sofia Papagiannaki
from django.core.urlresolvers import reverse
62 812b389c Sofia Papagiannaki
63 812b389c Sofia Papagiannaki
from astakos.im.forms import LocalUserCreationForm
64 812b389c Sofia Papagiannaki
from astakos.im.models import AstakosUser
65 812b389c Sofia Papagiannaki
from astakos.im.util import get_current_site
66 812b389c Sofia Papagiannaki
67 812b389c Sofia Papagiannaki
class BaseTestCase(unittest.TestCase):
68 812b389c Sofia Papagiannaki
    def setup(self):
69 812b389c Sofia Papagiannaki
        site = get_current_site()
70 812b389c Sofia Papagiannaki
        protocal = 'http'
71 812b389c Sofia Papagiannaki
        self.host = '%s://%s' % (protocol, site.domain)
72 812b389c Sofia Papagiannaki
73 812b389c Sofia Papagiannaki
class ApiTestCase(unittest.TestCase):
74 812b389c Sofia Papagiannaki
    def setUp(self):
75 812b389c Sofia Papagiannaki
        kwargs = {'email':'email',
76 812b389c Sofia Papagiannaki
                 'first_name':'first_name',
77 812b389c Sofia Papagiannaki
                 'last_name':'last_name'}
78 812b389c Sofia Papagiannaki
        self.user = self.create_user(**kwargs)
79 812b389c Sofia Papagiannaki
    
80 812b389c Sofia Papagiannaki
    def tear_down(self):
81 812b389c Sofia Papagiannaki
        delete_user(self.user.id)
82 812b389c Sofia Papagiannaki
    
83 812b389c Sofia Papagiannaki
    def test_authenticatite(self):
84 812b389c Sofia Papagiannaki
        url = '%s/im/authenticate' % self.host
85 812b389c Sofia Papagiannaki
        response, content = http.request(url, 'GET', headers={'X-Auth-Token':self.user.auth_token})
86 812b389c Sofia Papagiannaki
        self.assertEqual(response.status, 400)
87 812b389c Sofia Papagiannaki
88 812b389c Sofia Papagiannaki
    def create_user(self, **kwargs):
89 812b389c Sofia Papagiannaki
        conn = HTTPConnection(self.host)
90 812b389c Sofia Papagiannaki
        
91 812b389c Sofia Papagiannaki
        url = '/im/signup'
92 812b389c Sofia Papagiannaki
        user = AstakosUser()
93 812b389c Sofia Papagiannaki
        for k, v in kwargs.items():
94 812b389c Sofia Papagiannaki
            setattr(user, k, v)
95 812b389c Sofia Papagiannaki
        response, content = http.request(url,
96 812b389c Sofia Papagiannaki
                                         'POST',
97 812b389c Sofia Papagiannaki
                                         body=LocalUserCreationForm(instance=u,
98 812b389c Sofia Papagiannaki
                                                                    password1=kwargs['password'],
99 812b389c Sofia Papagiannaki
                                                                    password2=kwargs['password']))
100 812b389c Sofia Papagiannaki
        self.AssertEqual(response.status, 200)
101 812b389c Sofia Papagiannaki
        try:
102 812b389c Sofia Papagiannaki
            user = AstakosUser.get.object(email = kwargs['email'])
103 812b389c Sofia Papagiannaki
            for k, v in kwargs.items():
104 812b389c Sofia Papagiannaki
                self.assertEqual(getattr(user, k), v)
105 812b389c Sofia Papagiannaki
        except AstakosUser.DoesNotExist, e:
106 812b389c Sofia Papagiannaki
            self.fail("User does not exist")
107 812b389c Sofia Papagiannaki
    
108 812b389c Sofia Papagiannaki
    def delete_user(self, id):
109 812b389c Sofia Papagiannaki
        url = '%s/%s' % (reverse('astakos.im.admin.views'), id)
110 812b389c Sofia Papagiannaki
        response, content = http.request(url, 'POST')
111 812b389c Sofia Papagiannaki
112 812b389c Sofia Papagiannaki
if __name__ == "__main__":
113 812b389c Sofia Papagiannaki
    unittest.main()