From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1QbwTl-0006sX-T2 for garchives@archives.gentoo.org; Wed, 29 Jun 2011 15:15:03 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 6DDBF1C088; Wed, 29 Jun 2011 15:14:48 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 2C1631C088 for ; Wed, 29 Jun 2011 15:14:47 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 797081B404F for ; Wed, 29 Jun 2011 15:14:47 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 973078003C for ; Wed, 29 Jun 2011 15:14:46 +0000 (UTC) From: "Vikraman Choudhury" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Vikraman Choudhury" Message-ID: Subject: [gentoo-commits] proj/gentoostats:master commit in: server/, server/tests/ X-VCS-Repository: proj/gentoostats X-VCS-Files: server/runtests.py server/tests/__init__.py server/tests/test_host.py server/tests/test_index.py X-VCS-Directories: server/ server/tests/ X-VCS-Committer: vikraman X-VCS-Committer-Name: Vikraman Choudhury X-VCS-Revision: bef09ea969572c33cba0127a22a23ecd92f80926 Date: Wed, 29 Jun 2011 15:14:46 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 6520c4aa2d7805512a15566bca748677 commit: bef09ea969572c33cba0127a22a23ecd92f80926 Author: Vikraman Choudhury gmail com> AuthorDate: Wed Jun 29 15:14:26 2011 +0000 Commit: Vikraman Choudhury gmail com> CommitDate: Wed Jun 29 15:14:26 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gentoostats.g= it;a=3Dcommit;h=3Dbef09ea9 tests for server --- server/runtests.py | 13 +++++++ server/tests/__init__.py | 1 + server/tests/test_host.py | 81 ++++++++++++++++++++++++++++++++++++++= ++++++ server/tests/test_index.py | 26 ++++++++++++++ 4 files changed, 121 insertions(+), 0 deletions(-) diff --git a/server/runtests.py b/server/runtests.py new file mode 100755 index 0000000..8c0cbb0 --- /dev/null +++ b/server/runtests.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python + +import unittest + +from tests.test_index import TestIndex +from tests.test_host import TestHost + +testCases =3D [TestIndex, TestHost] + +if __name__ =3D=3D '__main__': + suites =3D [ unittest.TestLoader().loadTestsFromTestCase(testCase) for= testCase in testCases] + for suite in suites: + unittest.TextTestRunner(verbosity=3D2).run(suite) diff --git a/server/tests/__init__.py b/server/tests/__init__.py new file mode 100644 index 0000000..3c6cfa2 --- /dev/null +++ b/server/tests/__init__.py @@ -0,0 +1 @@ +# Make this a python package diff --git a/server/tests/test_host.py b/server/tests/test_host.py new file mode 100644 index 0000000..b5b6ebe --- /dev/null +++ b/server/tests/test_host.py @@ -0,0 +1,81 @@ + +import uuid +import json +import unittest +from main import app + +class TestHost(unittest.TestCase): + + def setUp(self): + self.b =3D app.browser() + + def test_basic(self): + self.b.open('/host') + self.assertEqual(self.b.path, '/host') + self.assertEqual(self.b.status, 404) + =20 + def test_get(self): + uri =3D '/host/' + str(uuid.uuid4()) + self.b.open(uri) + self.assertEqual(self.b.path, uri) + + # This has a probability of failing of + # 1 - exp(-((n+1)**2)/2**123) + # where n is the no. of uuids already in the db + self.assertEqual(self.b.status, 404) + + def test_post_empty(self): + str_uuid =3D str(uuid.uuid4()) + uri =3D '/host/' + str_uuid + # post with empty string + self.b.open(uri, '') + self.assertEqual(self.b.path, uri) + self.assertEqual(self.b.status, 500) + # post with empty json string + data =3D json.JSONEncoder().encode('') + self.b.open(uri, data) + self.assertEqual(self.b.path, uri) + self.assertEqual(self.b.status, 500) + # post with empty payload + payload =3D { + 'AUTH':{'UUID':str_uuid,'PASSWD':'test'}, + 'PROTOCOL':1 + } + data =3D json.JSONEncoder().encode(payload) + self.b.open(uri, data) + self.assertEqual(self.b.path, uri) + self.assertEqual(self.b.status, 500) + =20 + def test_post_bad(self): + str_uuid =3D str(uuid.uuid4()) + uri =3D '/host/' + str_uuid + # different uuid in payload + payload =3D { + 'AUTH':{'UUID':str(uuid.uuid4()),'PASSWD':'test'}, + 'PROTOCOL':1 + } + data =3D json.JSONEncoder().encode(payload) + self.b.open(uri,data) + self.assertEqual(self.b.path, uri) + self.assertEqual(self.b.status, 200) + self.assertTrue('Invalid uuid' in self.b.data) + + def test_post_get(self): + str_uuid =3D str(uuid.uuid4()) + uri =3D '/host/' + str_uuid + payload =3D { + 'AUTH':{'UUID':str_uuid,'PASSWD':'test'}, + 'PROTOCOL':1 + } + for var in ['PLATFORM','PROFILE','LASTSYNC']: + payload[var] =3D 'Unknown' + for var in ['ARCH','CHOST','CFLAGS','CXXFLAGS','FFLAGS','LDFLAGS','MAKE= OPTS','SYNC']: + payload[var] =3D None + for var in ['ACCEPT_KEYWORDS','LANG','GENTOO_MIRRORS','FEATURES','USE']= : + payload[var] =3D [] + payload['PACKAGES'] =3D {} + data =3D json.JSONEncoder().encode(payload) + self.b.open(uri,data) + self.assertEqual(self.b.path, uri) + self.assertEqual(self.b.status, 200) + self.assertTrue('POST for ' + str_uuid + ' successful' in self.b.data) diff --git a/server/tests/test_index.py b/server/tests/test_index.py new file mode 100644 index 0000000..63614ab --- /dev/null +++ b/server/tests/test_index.py @@ -0,0 +1,26 @@ + +import unittest +from main import app + +class TestIndex(unittest.TestCase): + + def setUp(self): + self.b =3D app.browser() + self.b.open('/') + + def test_basic(self): + self.assertEqual(self.b.path, '/') + self.assertEqual(self.b.status, 200) + + def test_content(self): + self.assertTrue('Welcome to the gentoostats webapp' in self.b.data) + + def test_hosts(self): + self.assertTrue('Number of hosts' in self.b.data) + lines =3D self.b.data.split('\n') + for line in lines: + if line.startswith('Number of hosts'): + words =3D line.split() + count =3D int(words[-1].strip('
')) + self.assertGreaterEqual(count,0) + break