Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : enter_the_matrix
---------------------------------------------------------------
commit 0946ff28f74abc98e6df87113fb5c852aea9f3b7
Author: Richard Marko <rmarko(a)fedoraproject.org>
Date: Thu Nov 14 15:30:27 2013 +0100
[tests]: fix for BuildChroots & new backend view
Signed-off-by: Richard Marko <rmarko(a)fedoraproject.org>
---------------------------------------------------------------
.../test_backend_ns/test_backend_general.py | 54 ++++++++++++-------
.../test_views/test_coprs_ns/test_coprs_builds.py | 12 ++---
.../test_views/test_coprs_ns/test_coprs_general.py | 35 ++++++++++---
3 files changed, 66 insertions(+), 35 deletions(-)
diff --git a/coprs_frontend/tests/test_views/test_backend_ns/test_backend_general.py
b/coprs_frontend/tests/test_views/test_backend_ns/test_backend_general.py
index 235ed98..322f01d 100644
--- a/coprs_frontend/tests/test_views/test_backend_ns/test_backend_general.py
+++ b/coprs_frontend/tests/test_views/test_backend_ns/test_backend_general.py
@@ -1,20 +1,22 @@
import json
-import flask
-
from coprs.signals import build_finished
from tests.coprs_test_case import CoprsTestCase
+
class TestWaitingBuilds(CoprsTestCase):
def test_no_waiting_builds(self):
- assert '"builds": []' in
self.tc.get('/backend/waiting_builds/').data
+ assert '"builds": []' in
self.tc.get('/backend/waiting/', headers=self.auth_header).data
+
+ def test_waiting_build_only_lists_not_started_or_ended(
+ self, f_users, f_coprs, f_mock_chroots, f_builds, f_db):
+
+ r = self.tc.get('/backend/waiting/', headers=self.auth_header)
+ assert len(json.loads(r.data)['builds']) == 4
- def test_waiting_build_only_lists_not_started_or_ended(self, f_users, f_coprs,
f_builds, f_db):
- r = self.tc.get('/backend/waiting_builds/')
- assert len(json.loads(r.data)['builds']) == 2
class TestUpdateBuilds(CoprsTestCase):
- data1="""
+ data1= """
{
"builds":[
{
@@ -33,6 +35,7 @@ class TestUpdateBuilds(CoprsTestCase):
"id": 1,
"copr_id": 2,
"status": 1,
+ "chroot": "fedora-18-x86_64",
"ended_on": 12345
}
]
@@ -44,13 +47,14 @@ class TestUpdateBuilds(CoprsTestCase):
{
"id": 1,
"copr_id": 2,
- "results": "http://server/results/foo/bar/",
"started_on": 1234
},
{
"id": 2,
"copr_id": 1,
"status": 0,
+ "chroot": "fedora-18-x86_64",
+ "results": "http://server/results/foo/bar/",
"ended_on": 123456
},
{
@@ -68,13 +72,17 @@ class TestUpdateBuilds(CoprsTestCase):
]
}"""
def test_updating_requires_password(self, f_users, f_coprs, f_builds, f_db):
- r = self.tc.post('/backend/update_builds/',
+ r = self.tc.post('/backend/update/',
content_type = 'application/json',
data = '')
assert 'You have to provide the correct password' in r.data
def test_update_build_started(self, f_users, f_coprs, f_builds, f_db):
- r = self.tc.post('/backend/update_builds/',
+ self.b1.started_on = None
+ self.db.session.add(self.b1)
+ self.db.session.commit()
+
+ r = self.tc.post('/backend/update/',
content_type='application/json',
headers=self.auth_header,
data=self.data1)
@@ -85,8 +93,8 @@ class TestUpdateBuilds(CoprsTestCase):
assert updated.results == 'http://server/results/foo/bar/'
assert updated.started_on == 1234
- def test_update_build_ended(self, f_users, f_coprs, f_builds, f_db):
- r = self.tc.post('/backend/update_builds/',
+ def test_update_build_ended(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db):
+ r = self.tc.post('/backend/update/',
content_type='application/json',
headers=self.auth_header,
data=self.data2)
@@ -97,8 +105,14 @@ class TestUpdateBuilds(CoprsTestCase):
assert updated.status == 1
assert updated.ended_on == 12345
- def test_update_more_existent_and_non_existent_builds(self, f_users, f_coprs,
f_builds, f_db):
- r = self.tc.post('/backend/update_builds/',
+ def test_update_more_existent_and_non_existent_builds(
+ self, f_users, f_coprs, f_mock_chroots, f_builds, f_db):
+
+ self.b1.started_on = None
+ self.db.session.add(self.b1)
+ self.db.session.commit()
+
+ r = self.tc.post('/backend/update/',
content_type='application/json',
headers=self.auth_header,
data=self.data3)
@@ -107,11 +121,11 @@ class TestUpdateBuilds(CoprsTestCase):
assert sorted(json.loads(r.data)["non_existing_builds_ids"]) ==
[123321, 1234321]
started = self.models.Build.query.filter(self.models.Build.id==1).first()
- assert started.results == 'http://server/results/foo/bar/'
assert started.started_on == 1234
ended = self.models.Build.query.filter(self.models.Build.id==2).first()
assert ended.status == 0
+ assert ended.results == 'http://server/results/foo/bar/'
assert ended.ended_on == 123456
def test_build_ended_emmits_signal(self, f_users, f_coprs, f_builds, f_db):
@@ -120,7 +134,7 @@ class TestUpdateBuilds(CoprsTestCase):
def test_receiver(sender, **kwargs):
signals_received.append(kwargs['build'])
build_finished.connect(test_receiver)
- r = self.tc.post('/backend/update_builds/',
+ r = self.tc.post('/backend/update/',
content_type='application/json',
headers=self.auth_header,
data=self.data3)
@@ -130,10 +144,10 @@ class TestUpdateBuilds(CoprsTestCase):
class TestWaitingActions(CoprsTestCase):
def test_no_waiting_builds(self):
- assert '"actions": []' in
self.tc.get('/backend/waiting_actions/').data
+ assert '"actions": []' in
self.tc.get('/backend/waiting/', headers=self.auth_header).data
def test_waiting_build_only_lists_not_started_or_ended(self, f_users, f_coprs,
f_actions, f_db):
- r = self.tc.get('/backend/waiting_actions/')
+ r = self.tc.get('/backend/waiting/', headers=self.auth_header)
assert len(json.loads(r.data)['actions']) == 2
class TestUpdateActions(CoprsTestCase):
@@ -173,7 +187,7 @@ class TestUpdateActions(CoprsTestCase):
}"""
def test_update_one_action(self, f_users, f_coprs, f_actions, f_db):
- r = self.tc.post('/backend/update_actions/',
+ r = self.tc.post('/backend/update/',
content_type='application/json',
headers=self.auth_header,
data=self.data1)
@@ -186,7 +200,7 @@ class TestUpdateActions(CoprsTestCase):
assert updated.ended_on == 123
def test_update_more_existent_and_non_existent_builds(self, f_users, f_coprs,
f_actions, f_db):
- r = self.tc.post('/backend/update_actions/',
+ r = self.tc.post('/backend/update/',
content_type='application/json',
headers=self.auth_header,
data=self.data2)
diff --git a/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py
b/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py
index 60bafb7..dc66562 100644
--- a/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py
+++ b/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_builds.py
@@ -1,15 +1,13 @@
-import flask
-
from tests.coprs_test_case import CoprsTestCase, TransactionDecorator
class TestCoprShowBuilds(CoprsTestCase):
- def test_copr_show_builds(self, f_users, f_coprs, f_builds, f_db):
+ def test_copr_show_builds(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db):
r = self.tc.get('/coprs/{0}/{1}/builds/'.format(self.u2.name,
self.c2.name))
assert r.data.count('<tr class="build-') == 2
class TestCoprAddBuild(CoprsTestCase):
@TransactionDecorator('u1')
- def test_copr_owner_can_add_build(self, f_users, f_coprs, f_db):
+ def test_copr_owner_can_add_build(self, f_users, f_coprs, f_mock_chroots, f_db):
self.db.session.add_all([self.u1, self.c1])
r =
self.test_client.post('/coprs/{0}/{1}/new_build/'.format(self.u1.name,
self.c1.name),
data = {'pkgs': 'http://testing'},
@@ -17,7 +15,7 @@ class TestCoprAddBuild(CoprsTestCase):
assert self.models.Build.query.first().pkgs == 'http://testing'
@TransactionDecorator('u1')
- def test_copr_allowed_user_can_add_build(self, f_users, f_coprs, f_copr_permissions,
f_db):
+ def test_copr_allowed_user_can_add_build(self, f_users, f_coprs, f_mock_chroots,
f_copr_permissions, f_db):
self.db.session.add_all([self.u2, self.c2])
r =
self.test_client.post('/coprs/{0}/{1}/new_build/'.format(self.u2.name,
self.c2.name),
data = {'pkgs': 'http://testing'},
@@ -44,7 +42,7 @@ class TestCoprAddBuild(CoprsTestCase):
class TestCoprCancelBuild(CoprsTestCase):
@TransactionDecorator('u1')
- def test_copr_build_submitter_can_cancel_build(self, f_users, f_coprs, f_builds,
f_db):
+ def test_copr_build_submitter_can_cancel_build(self, f_users, f_coprs,
f_mock_chroots, f_builds, f_db):
self.db.session.add_all([self.u1, self.c1, self.b1])
r =
self.test_client.post('/coprs/{0}/{1}/cancel_build/{2}/'.format(self.u1.name,
self.c1.name, self.b1.id),
data = {},
@@ -53,7 +51,7 @@ class TestCoprCancelBuild(CoprsTestCase):
@TransactionDecorator('u2')
- def test_copr_build_non_submitter_cannot_cancel_build(self, f_users, f_coprs,
f_builds, f_db):
+ def test_copr_build_non_submitter_cannot_cancel_build(self, f_users, f_coprs,
f_mock_chroots, f_builds, f_db):
self.db.session.add_all([self.u1, self.c1, self.b1])
r =
self.test_client.post('/coprs/{0}/{1}/cancel_build/{2}/'.format(self.u1.name,
self.c1.name, self.b1.id),
data = {},
diff --git a/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
b/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
index e02a0b3..179dad7 100644
--- a/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
+++ b/coprs_frontend/tests/test_views/test_coprs_ns/test_coprs_general.py
@@ -1,4 +1,3 @@
-import flask
import pytest
from flexmock import flexmock
@@ -132,7 +131,7 @@ class TestCoprDetail(CoprsTestCase):
assert r.status_code == 200
assert self.c1.name in r.data
- def test_copr_detail_contains_builds(self, f_users, f_coprs, f_builds, f_db):
+ def test_copr_detail_contains_builds(self, f_users, f_coprs, f_mock_chroots,
f_builds, f_db):
r = self.tc.get('/coprs/{0}/{1}/builds/'.format(self.u1.name,
self.c1.name))
assert r.data.count('<tr class="build') == 2
@@ -173,13 +172,13 @@ class TestCoprDetail(CoprsTestCase):
assert '/cancel_build/' not in r.data
@TransactionDecorator('u1')
- def test_copr_detail_doesnt_allow_non_submitter_to_cancel_build(self, f_users,
f_coprs, f_builds, f_db):
+ def test_copr_detail_doesnt_allow_non_submitter_to_cancel_build(self, f_users,
f_coprs, f_mock_chroots, f_builds, f_db):
self.db.session.add_all([self.u2, self.c2])
r = self.test_client.get('/coprs/{0}/{1}/builds/'.format(self.u2.name,
self.c2.name))
assert '/cancel_build/' not in r.data
@TransactionDecorator('u2')
- def test_copr_detail_allows_submitter_to_cancel_build(self, f_users, f_coprs,
f_builds, f_db):
+ def test_copr_detail_allows_submitter_to_cancel_build(self, f_users, f_coprs,
f_mock_chroots, f_builds, f_db):
self.db.session.add_all([self.u2, self.c2])
r = self.test_client.get('/coprs/{0}/{1}/builds/'.format(self.u2.name,
self.c2.name))
assert '/cancel_build/' in r.data
@@ -393,19 +392,39 @@ class TestCoprRepoGeneration(CoprsTestCase):
@pytest.fixture
def f_custom_builds(self):
''' Custom builds are used in order not to break the default ones
'''
- self.b5 = self.models.Build(copr=self.c1, user=self.u1,
chroots='fedora-18-x86_64', submitted_on=9, ended_on=200,
results='http://bar.baz', status=1)
- self.b6 = self.models.Build(copr=self.c1, user=self.u1,
chroots='fedora-18-x86_64', submitted_on=11)
- self.b7 = self.models.Build(copr=self.c1, user=self.u1,
chroots='fedora-18-x86_64', submitted_on=10, ended_on=150,
results='http://bar.baz', status=1)
+ self.b5 = self.models.Build(copr=self.c1, user=self.u1, submitted_on=9,
ended_on=200, results='http://bar.baz')
+ self.b6 = self.models.Build(copr=self.c1, user=self.u1, submitted_on=11)
+ self.b7 = self.models.Build(copr=self.c1, user=self.u1, submitted_on=10,
ended_on=150, results='http://bar.baz')
self.mc1 = self.models.MockChroot(os_release='fedora',
os_version='18', arch='x86_64')
self.cc1 = self.models.CoprChroot(mock_chroot = self.mc1, copr = self.c1)
+
+
+ # assign with chroots
+ for build in [self.b5, self.b6, self.b7]:
+ self.db.session.add(
+ self.models.BuildChroot(
+ build=build,
+ mock_chroot=self.mc1
+ )
+ )
+
self.db.session.add_all([self.b5, self.b6, self.b7, self.mc1, self.cc1])
@pytest.fixture
def f_not_finished_builds(self):
''' Custom builds are used in order not to break the default ones
'''
- self.b8 = self.models.Build(copr=self.c1, user=self.u1,
chroots='fedora-18-x86_64', submitted_on=11)
+ self.b8 = self.models.Build(copr=self.c1, user=self.u1, submitted_on=11)
self.mc1 = self.models.MockChroot(os_release='fedora',
os_version='18', arch='x86_64')
self.cc1 = self.models.CoprChroot(mock_chroot = self.mc1, copr = self.c1)
+
+ # assign with chroot
+ self.db.session.add(
+ self.models.BuildChroot(
+ build=self.b8,
+ mock_chroot=self.mc1
+ )
+ )
+
self.db.session.add_all([self.b8, self.mc1, self.cc1])
def test_fail_on_missing_dash(self):