コード例 #1
0
    def setUp(self):

        self.client = Client()
        self.category = Category(title='cat')
        self.category.save()
        self.entries = Entry.objects.all()
        self.categories = Category.objects.all()
コード例 #2
0
    def setUp(self):
        e = Entry(title='Twitter', username='******', url='twitter.com',
                  password='******', comment='no comment')
        c = Category(title='Internet', parent=None)

        self.entry = e
        self.category = c

        c.save()
        e.category = c
        e.save()
コード例 #3
0
    def test_delete_category(self):

        category = Category(title='Cat')
        category.save()
        entries = self._generate_entries(50)
        self._assign_category(entries, category)
        for e in entries:
            e.save()
            f = Entry.objects.filter(category=category)[0]
            self.assertEquals(f.category_id, category.id)
        id = category.id
        category.delete()
        self.assertEquals(len(Entry.objects.filter(category_id=id)), 0)
コード例 #4
0
    def test_entry_add(self):

        self._authentificate()
        cat = Category(title='New cat')
        cat.save()
        entries = self._generate_entries(20, cat)

        # Test good insertions
        for e in entries:

            s = {'title': e.title, 'password': e.password, 'category': e.category.id}
            response = self.client.post('/api/entry/add', s)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '1')

            entry_from_db = Entry.objects.filter(title=e.title)
            e2 = entry_from_db[0]
            self.assertTrue(len(entry_from_db) >= 1)
            self.assertEquals(e2.title, s['title'])
            self.assertEquals(e2.password, s['password'])
            self.assertEquals(e2.category.id, s['category'])


        # Test bad insertions
        s = [{'title': 'test', 'category': self.category.id},
             {'password': '******', 'category': self.category.id},
             {'password': '******', 'title': 'test'},
             {'password': '******'},
             {'title': 't'},
             {'category': self.category.id},
             {'password': '******', 'title': 'test', 'category': self.category.id + 1000},
             ]

        for bad in s:
            response = self.client.post('/api/entry/add', bad)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '0')

        # Test dates
        title = str(random.random())
        date = '06/14/2025'
        s = {'title': title,
             'password': '******',
             'category': e.category.id,
             'expires': date}
        response = self.client.post('/api/entry/add', s)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.content, '1')
        entry_from_db = Entry.objects.filter(title=title)[0]
        self.assertEquals(entry_from_db.expires, datetime.datetime.strptime(date, "%m/%d/%Y").date())
コード例 #5
0
ファイル: model.py プロジェクト: underlost/passe
    def setUp(self):
        e = Entry(title='Twitter',
                  username='******',
                  url='twitter.com',
                  password='******',
                  comment='no comment')
        c = Category(title='Internet', parent=None)

        self.entry = e
        self.category = c

        c.save()
        e.category = c
        e.save()
コード例 #6
0
    def setUp(self):

        self.client = Client()
        self.category = Category(title='cat')
        self.category.save()
        self.entries = Entry.objects.all()
        self.categories = Category.objects.all()
コード例 #7
0
ファイル: model.py プロジェクト: underlost/passe
 def test_create_category(self):
     t = 'uniqTitle'
     c1 = Category(title=t)
     c2 = Category(title=t)
     c1.save()
     try:
         c2.save()
     except:
         pass
     else:
         self.fail('Should not have two categories with same title')
コード例 #8
0
    def test_save_entry_with_encrypted_key(self):

        c = Category(title='Internet')
        c.save()

        for i, password in enumerate(self.texts):

            password_after_encryption = self.engine.encrypt(password)
            title = 'My Twitter Account: ' + str(i)
            e = Entry(title=title, username='******',
                      url='twitter.com', password=password_after_encryption,
                      comment='no comment')
            e.category = c
            e.save()

            # Fetches the saved entry
            f = Entry.objects.filter(title=title)[0]
            password_decrypted = self.engine.decrypt(f.password)

            self.assertEquals(password_after_encryption, f.password)
            self.assertEquals(password_decrypted, password)
            f.delete()
コード例 #9
0
    def test_save_entry_with_encrypted_key(self):

        c = Category(title='Internet')
        c.save()

        for i, password in enumerate(self.texts):

            password_after_encryption = self.engine.encrypt(password)
            title = 'My Twitter Account: ' + str(i)
            e = Entry(title=title,
                      username='******',
                      url='twitter.com',
                      password=password_after_encryption,
                      comment='no comment')
            e.category = c
            e.save()

            # Fetches the saved entry
            f = Entry.objects.filter(title=title)[0]
            password_decrypted = self.engine.decrypt(f.password)

            self.assertEquals(password_after_encryption, f.password)
            self.assertEquals(password_decrypted, password)
            f.delete()
コード例 #10
0
 def test_create_category(self):
     t = 'uniqTitle'
     c1 = Category(title=t)
     c2 = Category(title=t)
     c1.save()
     try:
         c2.save()
     except:
         pass
     else:
         self.fail('Should not have two categories with same title')
コード例 #11
0
ファイル: model.py プロジェクト: underlost/passe
    def test_delete_category(self):

        category = Category(title='Cat')
        category.save()
        entries = self._generate_entries(50)
        self._assign_category(entries, category)
        for e in entries:
            e.save()
            f = Entry.objects.filter(category=category)[0]
            self.assertEquals(f.category_id, category.id)
        id = category.id
        category.delete()
        self.assertEquals(len(Entry.objects.filter(category_id=id)), 0)
コード例 #12
0
class APITest(TestCase):

    USERNAME = '******'
    PASSWORD = '******'
    fixtures = ['admin_user.json', 'data.json']
    API_pages = [{'page': '/api/entries.json', 'method': 'get',
                  'parameters': {}},
                 {'page': '/api/random_key.json', 'method': 'get',
                  'parameters': {'length': 100}},
                 {'page': '/api/search.json', 'method': 'get',
                  'parameters': {'title': ''}},
                 {'page': '/api/entry/add', 'method': 'post',
                  'parameters': {'title': 'new entry', 'password': '******'}}
                 ]

    def setUp(self):

        self.client = Client()
        self.category = Category(title='cat')
        self.category.save()
        self.entries = Entry.objects.all()
        self.categories = Category.objects.all()

    def test_authentification(self):

        # Without auth
        for p in self.API_pages:

            if p['method'] == 'get':
                response = self.client.get(p['page'], p['parameters'])
            elif p['method'] == 'post':
                response = self.client.post(p['page'], p['parameters'])

            self.assertFalse(response.status_code == 200)

        # With auth
        self._authentificate()
        for p in self.API_pages:
            if p['method'] == 'get':
                response = self.client.get(p['page'], p['parameters'])
            elif p['method'] == 'post':
                response = self.client.post(p['page'], p['parameters'])

            self.assertTrue(response.status_code == 200)

    def test_get_entry_title(self):
        self._authentificate()
        response = self.client.get('/api/entries.json')
        self.assertEquals(response.status_code, 200)

        data = json.loads(response.content)
        self.assertTrue(isinstance(data, list))
        self.assertEquals(len(data), len(self.entries))
        number_of_entries = 20
        entries = self._generate_entries(number_of_entries, self.category)

        for e in entries:
            e.save()

        response = self.client.get('/api/entries.json')
        self.assertEquals(response.status_code, 200)

        data = json.loads(response.content)
        self.assertTrue(isinstance(data, list))
        self.assertEquals(len(data), number_of_entries + len(self.entries))

    def test_get_random_key(self):

        self._authentificate()
        queries = self._generate_queries(20)
        for q in queries:
            response = self.client.get('/api/random_key.json', q)
            self.assertEquals(response.status_code, 200)
            data = json.loads(response.content)
            self.assertEquals(len(data), q['length'])

    def test_get_entry_search(self):

        # test the search on the titles
        self._authentificate()
        for e in self.entries:
            s = {'title': e.title}
            response = self.client.get('/api/search.json', s)
            self.assertEquals(response.status_code, 200)
            data = json.loads(response.content)
            self.assertEquals(len(data), 1)

        # Test the search on the categories
        for c in self.categories:
            s = {'category': c.title}
            response = self.client.get('/api/search.json', s)
            self.assertEquals(response.status_code, 200)
            data = json.loads(response.content)
            self.assertEquals(len(data), len(c.entry_set.all()))

    def test_entry_add(self):

        self._authentificate()
        cat = Category(title='New cat')
        cat.save()
        entries = self._generate_entries(20, cat)

        # Test good insertions
        for e in entries:

            s = {'title': e.title, 'password': e.password, 'category': e.category.id}
            response = self.client.post('/api/entry/add', s)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '1')

            entry_from_db = Entry.objects.filter(title=e.title)
            e2 = entry_from_db[0]
            self.assertTrue(len(entry_from_db) >= 1)
            self.assertEquals(e2.title, s['title'])
            self.assertEquals(e2.password, s['password'])
            self.assertEquals(e2.category.id, s['category'])


        # Test bad insertions
        s = [{'title': 'test', 'category': self.category.id},
             {'password': '******', 'category': self.category.id},
             {'password': '******', 'title': 'test'},
             {'password': '******'},
             {'title': 't'},
             {'category': self.category.id},
             {'password': '******', 'title': 'test', 'category': self.category.id + 1000},
             ]

        for bad in s:
            response = self.client.post('/api/entry/add', bad)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '0')

        # Test dates
        title = str(random.random())
        date = '06/14/2025'
        s = {'title': title,
             'password': '******',
             'category': e.category.id,
             'expires': date}
        response = self.client.post('/api/entry/add', s)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.content, '1')
        entry_from_db = Entry.objects.filter(title=title)[0]
        self.assertEquals(entry_from_db.expires, datetime.datetime.strptime(date, "%m/%d/%Y").date())

    def _generate_entries(self, number, category):
        entries = []
        for i in xrange(number):
            entries.append(Entry(title=str(random.random()),
                                 password=str(i),
                                 category=category))
        return entries

    def _generate_queries(self, number):
        queries = []
        for i in xrange(number):
            queries.append({'length': random.randint(1, 100)})
        return queries

    def _authentificate(self):
        self.client.login(username=self.USERNAME, password=self.PASSWORD)
コード例 #13
0
class APITest(TestCase):

    USERNAME = '******'
    PASSWORD = '******'
    fixtures = ['admin_user.json', 'data.json']
    API_pages = [{
        'page': '/api/entries.json',
        'method': 'get',
        'parameters': {}
    }, {
        'page': '/api/random_key.json',
        'method': 'get',
        'parameters': {
            'length': 100
        }
    }, {
        'page': '/api/search.json',
        'method': 'get',
        'parameters': {
            'title': ''
        }
    }, {
        'page': '/api/entry/add',
        'method': 'post',
        'parameters': {
            'title': 'new entry',
            'password': '******'
        }
    }]

    def setUp(self):

        self.client = Client()
        self.category = Category(title='cat')
        self.category.save()
        self.entries = Entry.objects.all()
        self.categories = Category.objects.all()

    def test_authentification(self):

        # Without auth
        for p in self.API_pages:

            if p['method'] == 'get':
                response = self.client.get(p['page'], p['parameters'])
            elif p['method'] == 'post':
                response = self.client.post(p['page'], p['parameters'])

            self.assertFalse(response.status_code == 200)

        # With auth
        self._authentificate()
        for p in self.API_pages:
            if p['method'] == 'get':
                response = self.client.get(p['page'], p['parameters'])
            elif p['method'] == 'post':
                response = self.client.post(p['page'], p['parameters'])

            self.assertTrue(response.status_code == 200)

    def test_get_entry_title(self):
        self._authentificate()
        response = self.client.get('/api/entries.json')
        self.assertEquals(response.status_code, 200)

        data = json.loads(response.content)
        self.assertTrue(isinstance(data, list))
        self.assertEquals(len(data), len(self.entries))
        number_of_entries = 20
        entries = self._generate_entries(number_of_entries, self.category)

        for e in entries:
            e.save()

        response = self.client.get('/api/entries.json')
        self.assertEquals(response.status_code, 200)

        data = json.loads(response.content)
        self.assertTrue(isinstance(data, list))
        self.assertEquals(len(data), number_of_entries + len(self.entries))

    def test_get_random_key(self):

        self._authentificate()
        queries = self._generate_queries(20)
        for q in queries:
            response = self.client.get('/api/random_key.json', q)
            self.assertEquals(response.status_code, 200)
            data = json.loads(response.content)
            self.assertEquals(len(data), q['length'])

    def test_get_entry_search(self):

        # test the search on the titles
        self._authentificate()
        for e in self.entries:
            s = {'title': e.title}
            response = self.client.get('/api/search.json', s)
            self.assertEquals(response.status_code, 200)
            data = json.loads(response.content)
            self.assertEquals(len(data), 1)

        # Test the search on the categories
        for c in self.categories:
            s = {'category': c.title}
            response = self.client.get('/api/search.json', s)
            self.assertEquals(response.status_code, 200)
            data = json.loads(response.content)
            self.assertEquals(len(data), len(c.entry_set.all()))

    def test_entry_add(self):

        self._authentificate()
        cat = Category(title='New cat')
        cat.save()
        entries = self._generate_entries(20, cat)

        # Test good insertions
        for e in entries:

            s = {
                'title': e.title,
                'password': e.password,
                'category': e.category.id
            }
            response = self.client.post('/api/entry/add', s)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '1')

            entry_from_db = Entry.objects.filter(title=e.title)
            e2 = entry_from_db[0]
            self.assertTrue(len(entry_from_db) >= 1)
            self.assertEquals(e2.title, s['title'])
            self.assertEquals(e2.password, s['password'])
            self.assertEquals(e2.category.id, s['category'])

        # Test bad insertions
        s = [
            {
                'title': 'test',
                'category': self.category.id
            },
            {
                'password': '******',
                'category': self.category.id
            },
            {
                'password': '******',
                'title': 'test'
            },
            {
                'password': '******'
            },
            {
                'title': 't'
            },
            {
                'category': self.category.id
            },
            {
                'password': '******',
                'title': 'test',
                'category': self.category.id + 1000
            },
        ]

        for bad in s:
            response = self.client.post('/api/entry/add', bad)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '0')

        # Test dates
        title = str(random.random())
        date = '06/14/2025'
        s = {
            'title': title,
            'password': '******',
            'category': e.category.id,
            'expires': date
        }
        response = self.client.post('/api/entry/add', s)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.content, '1')
        entry_from_db = Entry.objects.filter(title=title)[0]
        self.assertEquals(entry_from_db.expires,
                          datetime.datetime.strptime(date, "%m/%d/%Y").date())

    def _generate_entries(self, number, category):
        entries = []
        for i in xrange(number):
            entries.append(
                Entry(title=str(random.random()),
                      password=str(i),
                      category=category))
        return entries

    def _generate_queries(self, number):
        queries = []
        for i in xrange(number):
            queries.append({'length': random.randint(1, 100)})
        return queries

    def _authentificate(self):
        self.client.login(username=self.USERNAME, password=self.PASSWORD)
コード例 #14
0
    def test_entry_add(self):

        self._authentificate()
        cat = Category(title='New cat')
        cat.save()
        entries = self._generate_entries(20, cat)

        # Test good insertions
        for e in entries:

            s = {
                'title': e.title,
                'password': e.password,
                'category': e.category.id
            }
            response = self.client.post('/api/entry/add', s)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '1')

            entry_from_db = Entry.objects.filter(title=e.title)
            e2 = entry_from_db[0]
            self.assertTrue(len(entry_from_db) >= 1)
            self.assertEquals(e2.title, s['title'])
            self.assertEquals(e2.password, s['password'])
            self.assertEquals(e2.category.id, s['category'])

        # Test bad insertions
        s = [
            {
                'title': 'test',
                'category': self.category.id
            },
            {
                'password': '******',
                'category': self.category.id
            },
            {
                'password': '******',
                'title': 'test'
            },
            {
                'password': '******'
            },
            {
                'title': 't'
            },
            {
                'category': self.category.id
            },
            {
                'password': '******',
                'title': 'test',
                'category': self.category.id + 1000
            },
        ]

        for bad in s:
            response = self.client.post('/api/entry/add', bad)
            self.assertEquals(response.status_code, 200)
            self.assertEquals(response.content, '0')

        # Test dates
        title = str(random.random())
        date = '06/14/2025'
        s = {
            'title': title,
            'password': '******',
            'category': e.category.id,
            'expires': date
        }
        response = self.client.post('/api/entry/add', s)
        self.assertEquals(response.status_code, 200)
        self.assertEquals(response.content, '1')
        entry_from_db = Entry.objects.filter(title=title)[0]
        self.assertEquals(entry_from_db.expires,
                          datetime.datetime.strptime(date, "%m/%d/%Y").date())