|
Pierre-Yves Chibon |
b4a226 |
# -*- coding: utf-8 -*-
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
"""
|
|
Pierre-Yves Chibon |
b4a226 |
(c) 2017 - Copyright Red Hat Inc
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
Authors:
|
|
Pierre-Yves Chibon |
b4a226 |
Pierre-Yves Chibon <pingou@pingoured.fr></pingou@pingoured.fr>
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
"""
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
67d1cc |
from __future__ import unicode_literals, absolute_import
|
|
Aurélien Bompard |
dcf6f6 |
|
|
Pierre-Yves Chibon |
b4a226 |
import json
|
|
Pierre-Yves Chibon |
b4a226 |
import unittest
|
|
Pierre-Yves Chibon |
b4a226 |
import sys
|
|
Pierre-Yves Chibon |
b4a226 |
import os
|
|
Pierre-Yves Chibon |
b4a226 |
import uuid
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
sys.path.insert(
|
|
Pierre-Yves Chibon |
73d120 |
0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
|
|
Pierre-Yves Chibon |
73d120 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
import pagure.lib.model as model
|
|
Pierre-Yves Chibon |
930073 |
import pagure.lib.query
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
import tests
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
class DeleteProjectTests(tests.Modeltests):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Tests for flask issues controller of pagure """
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_project_with_group(self):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the model when we delete a project with a group. """
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create a project
|
|
Pierre-Yves Chibon |
b4a226 |
item = model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
73d120 |
name="test",
|
|
Pierre-Yves Chibon |
73d120 |
description="test project #1",
|
|
Pierre-Yves Chibon |
73d120 |
hook_token="aaabbbiii",
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create a group
|
|
Pierre-Yves Chibon |
b4a226 |
grp = model.PagureGroup(
|
|
Pierre-Yves Chibon |
73d120 |
group_name="testgrp",
|
|
Pierre-Yves Chibon |
73d120 |
display_name="Test group",
|
|
Pierre-Yves Chibon |
b4a226 |
description=None,
|
|
Pierre-Yves Chibon |
73d120 |
group_type="user",
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(grp)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Add group to project
|
|
Pierre-Yves Chibon |
b4a226 |
project_group = model.ProjectGroup(
|
|
Pierre-Yves Chibon |
73d120 |
project_id=1, group_id=1, access="admin"
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(project_group)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 1)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.ProjectGroup).count(), 1)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
project = (
|
|
Pierre-Yves Chibon |
73d120 |
self.session.query(model.Project)
|
|
Pierre-Yves Chibon |
73d120 |
.filter(model.Project.id == 1)
|
|
Pierre-Yves Chibon |
73d120 |
.one()
|
|
Pierre-Yves Chibon |
73d120 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.delete(project)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.ProjectGroup).count(), 0)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_project_with_user(self):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the model when we delete a project with users. """
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create a project
|
|
Pierre-Yves Chibon |
b4a226 |
item = model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
73d120 |
name="test",
|
|
Pierre-Yves Chibon |
73d120 |
description="test project #1",
|
|
Pierre-Yves Chibon |
73d120 |
hook_token="aaabbbiii",
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Add user #2 to project
|
|
Pierre-Yves Chibon |
b4a226 |
project_user = model.ProjectUser(
|
|
Pierre-Yves Chibon |
73d120 |
project_id=1, user_id=2, access="admin"
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(project_user)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 1)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.ProjectUser).count(), 1)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.User).count(), 2)
|
|
Pierre-Yves Chibon |
73d120 |
|
|
Pierre-Yves Chibon |
73d120 |
project = (
|
|
Pierre-Yves Chibon |
73d120 |
self.session.query(model.Project)
|
|
Pierre-Yves Chibon |
73d120 |
.filter(model.Project.id == 1)
|
|
Pierre-Yves Chibon |
73d120 |
.one()
|
|
Pierre-Yves Chibon |
73d120 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.delete(project)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.ProjectUser).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.User).count(), 2)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_project_with_coloredtags(self):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the model when we delete a project with Colored tags. """
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create a project
|
|
Pierre-Yves Chibon |
b4a226 |
item = model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
73d120 |
name="test",
|
|
Pierre-Yves Chibon |
73d120 |
description="test project #1",
|
|
Pierre-Yves Chibon |
73d120 |
hook_token="aaabbbiii",
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create two ColoredTags
|
|
Pierre-Yves Chibon |
73d120 |
tagobj = model.TagColored(tag="Tag#1", project_id=1)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagobj)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.flush()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
tagobj = model.TagColored(tag="Tag#2", project_id=1)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagobj)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.flush()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 1)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.TagColored).count(), 2)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
project = (
|
|
Pierre-Yves Chibon |
73d120 |
self.session.query(model.Project)
|
|
Pierre-Yves Chibon |
73d120 |
.filter(model.Project.id == 1)
|
|
Pierre-Yves Chibon |
73d120 |
.one()
|
|
Pierre-Yves Chibon |
73d120 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.delete(project)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.TagColored).count(), 0)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_project_with_coloredtags_and_issues(self):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the model when we delete a project with Colored tags and
|
|
Pierre-Yves Chibon |
b4a226 |
issues. """
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create a project
|
|
Pierre-Yves Chibon |
b4a226 |
item = model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
73d120 |
name="test",
|
|
Pierre-Yves Chibon |
73d120 |
description="test project #1",
|
|
Pierre-Yves Chibon |
73d120 |
hook_token="aaabbbiii",
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create two ColoredTags
|
|
Pierre-Yves Chibon |
73d120 |
tagobj = model.TagColored(tag="Tag#1", project_id=1)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagobj)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.flush()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
tagobj = model.TagColored(tag="Tag#2", project_id=1)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagobj)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.flush()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create issues
|
|
Pierre-Yves Chibon |
b4a226 |
issue = model.Issue(
|
|
Pierre-Yves Chibon |
930073 |
id=pagure.lib.query.get_next_id(self.session, 1),
|
|
Pierre-Yves Chibon |
b4a226 |
project_id=1,
|
|
Pierre-Yves Chibon |
73d120 |
title="Issue #1",
|
|
Pierre-Yves Chibon |
73d120 |
content="Description #1",
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1,
|
|
Pierre-Yves Chibon |
b4a226 |
uid=uuid.uuid4().hex,
|
|
Pierre-Yves Chibon |
b4a226 |
private=False,
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(issue)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
issue = model.Issue(
|
|
Pierre-Yves Chibon |
930073 |
id=pagure.lib.query.get_next_id(self.session, 1),
|
|
Pierre-Yves Chibon |
b4a226 |
project_id=1,
|
|
Pierre-Yves Chibon |
73d120 |
title="Issue #2",
|
|
Pierre-Yves Chibon |
73d120 |
content="Description #2",
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1,
|
|
Pierre-Yves Chibon |
b4a226 |
uid=uuid.uuid4().hex,
|
|
Pierre-Yves Chibon |
b4a226 |
private=False,
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(issue)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 1)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.TagColored).count(), 2)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Issue).count(), 2)
|
|
Pierre-Yves Chibon |
73d120 |
|
|
Pierre-Yves Chibon |
73d120 |
project = (
|
|
Pierre-Yves Chibon |
73d120 |
self.session.query(model.Project)
|
|
Pierre-Yves Chibon |
73d120 |
.filter(model.Project.id == 1)
|
|
Pierre-Yves Chibon |
73d120 |
.one()
|
|
Pierre-Yves Chibon |
73d120 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.delete(project)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.TagColored).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Issue).count(), 0)
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
def test_delete_project_with_coloredtags_and_tagged_issues(self):
|
|
Pierre-Yves Chibon |
b4a226 |
""" Test the model when we delete a project with Colored tags and
|
|
Pierre-Yves Chibon |
b4a226 |
tagged issues. """
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create a project
|
|
Pierre-Yves Chibon |
b4a226 |
item = model.Project(
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1, # pingou
|
|
Pierre-Yves Chibon |
73d120 |
name="test",
|
|
Pierre-Yves Chibon |
73d120 |
description="test project #1",
|
|
Pierre-Yves Chibon |
73d120 |
hook_token="aaabbbiii",
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(item)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create two ColoredTags
|
|
Pierre-Yves Chibon |
73d120 |
tagobj = model.TagColored(tag="Tag#1", project_id=1)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagobj)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.flush()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
tagobj = model.TagColored(tag="Tag#2", project_id=1)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagobj)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.flush()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Create issues
|
|
Pierre-Yves Chibon |
b4a226 |
issue = model.Issue(
|
|
Pierre-Yves Chibon |
930073 |
id=pagure.lib.query.get_next_id(self.session, 1),
|
|
Pierre-Yves Chibon |
b4a226 |
project_id=1,
|
|
Pierre-Yves Chibon |
73d120 |
title="Issue #1",
|
|
Pierre-Yves Chibon |
73d120 |
content="Description #1",
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1,
|
|
Pierre-Yves Chibon |
73d120 |
uid="Issue#1",
|
|
Pierre-Yves Chibon |
b4a226 |
private=False,
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(issue)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
issue = model.Issue(
|
|
Pierre-Yves Chibon |
930073 |
id=pagure.lib.query.get_next_id(self.session, 1),
|
|
Pierre-Yves Chibon |
b4a226 |
project_id=1,
|
|
Pierre-Yves Chibon |
73d120 |
title="Issue #2",
|
|
Pierre-Yves Chibon |
73d120 |
content="Description #2",
|
|
Pierre-Yves Chibon |
b4a226 |
user_id=1,
|
|
Pierre-Yves Chibon |
73d120 |
uid="Issue#2",
|
|
Pierre-Yves Chibon |
b4a226 |
private=False,
|
|
Pierre-Yves Chibon |
b4a226 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(issue)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
b4a226 |
# Tag the issue
|
|
Pierre-Yves Chibon |
73d120 |
tagissue = model.TagIssueColored(issue_uid="Issue#1", tag_id=1)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagissue)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
tagissue = model.TagIssueColored(issue_uid="Issue#2", tag_id=2)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.add(tagissue)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 1)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.TagColored).count(), 2)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Issue).count(), 2)
|
|
Pierre-Yves Chibon |
73d120 |
|
|
Pierre-Yves Chibon |
73d120 |
project = (
|
|
Pierre-Yves Chibon |
73d120 |
self.session.query(model.Project)
|
|
Pierre-Yves Chibon |
73d120 |
.filter(model.Project.id == 1)
|
|
Pierre-Yves Chibon |
73d120 |
.one()
|
|
Pierre-Yves Chibon |
73d120 |
)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.delete(project)
|
|
Pierre-Yves Chibon |
b4a226 |
self.session.commit()
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Project).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.TagColored).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
self.assertEqual(self.session.query(model.Issue).count(), 0)
|
|
Pierre-Yves Chibon |
73d120 |
|
|
Pierre-Yves Chibon |
b4a226 |
|
|
Pierre-Yves Chibon |
73d120 |
if __name__ == "__main__":
|
|
Pierre-Yves Chibon |
b4a226 |
unittest.main(verbosity=2)
|