def test_new_project_action_rerun_post_approve(self):
        """
        Tests the new project action for an existing user.
        """

        user = mock.Mock()
        user.id = "test_user_id"
        user.name = "test_user"
        user.domain = 'default'

        project = mock.Mock()
        project.id = "parent_project"
        project.domain = "default"

        setup_temp_cache({project.id: project}, {user.id: user})

        task = Task.objects.create(ip_address="0.0.0.0",
                                   keystone_user={
                                       "user_id": "test_user_id",
                                       "project_id": "parent_project",
                                       "project_domain_id": 'default'
                                   })

        data = {
            'domain_id': 'default',
            'parent_id': "parent_project",
            'project_name': 'test_project',
        }

        action = NewProjectAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)
        self.assertEquals(tests.temp_cache['projects']['test_project'].name,
                          'test_project')

        self.assertEquals(tests.temp_cache['projects']['test_project'].parent,
                          'parent_project')

        action.post_approve()
        # Nothing should change
        self.assertEquals(action.valid, True)
        self.assertEquals(tests.temp_cache['projects']['test_project'].name,
                          'test_project')

        self.assertEquals(tests.temp_cache['projects']['test_project'].parent,
                          'parent_project')

        project = tests.temp_cache['projects']['test_project']
        self.assertEquals(
            sorted(project.roles["test_user_id"]),
            sorted([
                '_member_', 'project_admin', 'project_mod', 'heat_stack_owner'
            ]))

        action.submit({})
        self.assertEquals(action.valid, True)
Example #2
0
    def test_new_project_action(self):
        """
        Tests the new project action for an existing user.
        """

        project = fake_clients.FakeProject(name="parent_project")

        user = fake_clients.FakeUser(name="*****@*****.**",
                                     password="******",
                                     email="*****@*****.**")

        setup_identity_cache(projects=[project], users=[user])

        task = Task.objects.create(
            keystone_user={
                "user_id": user.id,
                "project_id": project.id,
                "project_domain_id": "default",
            })

        data = {
            "domain_id": "default",
            "parent_id": project.id,
            "project_name": "test_project",
            "description": "",
        }

        action = NewProjectAction(data, task=task, order=1)

        action.prepare()
        self.assertEqual(action.valid, True)

        action.approve()
        self.assertEqual(action.valid, True)

        new_project = fake_clients.identity_cache["new_projects"][0]
        self.assertEqual(new_project.name, "test_project")
        self.assertEqual(new_project.parent_id, project.id)

        fake_client = fake_clients.FakeManager()
        roles = fake_client._get_roles_as_names(user, new_project)
        self.assertEqual(
            sorted(roles),
            sorted(
                ["member", "project_admin", "project_mod",
                 "heat_stack_owner"]),
        )

        action.submit({})
        self.assertEqual(action.valid, True)
Example #3
0
    def test_new_project_action(self):
        """
        Tests the new project action for an existing user.
        """

        project = fake_clients.FakeProject(name="parent_project")

        user = fake_clients.FakeUser(name="*****@*****.**",
                                     password="******",
                                     email="*****@*****.**")

        setup_identity_cache(projects=[project], users=[user])

        task = Task.objects.create(ip_address="0.0.0.0",
                                   keystone_user={
                                       "user_id": user.id,
                                       "project_id": project.id,
                                       "project_domain_id": 'default'
                                   })

        data = {
            'domain_id': 'default',
            'parent_id': project.id,
            'project_name': 'test_project',
            'description': '',
        }

        action = NewProjectAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEqual(action.valid, True)

        action.post_approve()
        self.assertEqual(action.valid, True)

        new_project = fake_clients.identity_cache['new_projects'][0]
        self.assertEqual(new_project.name, 'test_project')
        self.assertEqual(new_project.parent_id, project.id)

        fake_client = fake_clients.FakeManager()
        roles = fake_client._get_roles_as_names(user, new_project)
        self.assertEqual(
            sorted(roles),
            sorted([
                '_member_', 'project_admin', 'project_mod', 'heat_stack_owner'
            ]))

        action.submit({})
        self.assertEqual(action.valid, True)
    def test_new_project_action_no_parent_id(self):
        """
        New project action where there is no specified parent id
        """

        user = mock.Mock()
        user.id = "test_user_id"
        user.name = "test_user"
        user.domain = 'default'

        project = mock.Mock()
        project.id = "parent_project"
        project.domain = "default"

        setup_temp_cache({project.id: project}, {user.id: user})

        task = Task.objects.create(ip_address="0.0.0.0",
                                   keystone_user={
                                       "user_id": "test_user_id",
                                       "project_id": "parent_project",
                                       "project_domain_id": 'default'
                                   })

        data = {
            'domain_id': 'default',
            'parent_id': None,
            'project_name': 'test_project',
        }

        action = NewProjectAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, True)

        action.post_approve()
        self.assertEquals(action.valid, True)

        self.assertEquals(tests.temp_cache['projects']['test_project'].parent,
                          'default')

        action.submit({})
        self.assertEquals(action.valid, True)
Example #5
0
    def test_new_project_action_no_parent_id(self):
        """
        New project action where there is no specified parent id
        """

        project = fake_clients.FakeProject(name="parent_project")

        user = fake_clients.FakeUser(name="*****@*****.**",
                                     password="******",
                                     email="*****@*****.**")

        setup_identity_cache(projects=[project], users=[user])

        task = Task.objects.create(
            keystone_user={
                "user_id": user.id,
                "project_id": project.id,
                "project_domain_id": "default",
            })

        data = {
            "domain_id": "default",
            "parent_id": None,
            "project_name": "test_project",
            "description": "",
        }

        action = NewProjectAction(data, task=task, order=1)

        action.prepare()
        self.assertEqual(action.valid, True)

        action.approve()
        self.assertEqual(action.valid, True)

        new_project = fake_clients.identity_cache["new_projects"][0]
        self.assertEqual(new_project.name, "test_project")
        self.assertEqual(new_project.parent_id, None)

        action.submit({})
        self.assertEqual(action.valid, True)
Example #6
0
    def test_new_project_action_no_parent_id(self):
        """
        New project action where there is no specified parent id
        """

        project = fake_clients.FakeProject(name="parent_project")

        user = fake_clients.FakeUser(name="*****@*****.**",
                                     password="******",
                                     email="*****@*****.**")

        setup_identity_cache(projects=[project], users=[user])

        task = Task.objects.create(ip_address="0.0.0.0",
                                   keystone_user={
                                       "user_id": user.id,
                                       "project_id": project.id,
                                       "project_domain_id": 'default'
                                   })

        data = {
            'domain_id': 'default',
            'parent_id': None,
            'project_name': 'test_project',
            'description': '',
        }

        action = NewProjectAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEqual(action.valid, True)

        action.post_approve()
        self.assertEqual(action.valid, True)

        new_project = fake_clients.identity_cache['new_projects'][0]
        self.assertEqual(new_project.name, 'test_project')
        self.assertEqual(new_project.parent_id, None)

        action.submit({})
        self.assertEqual(action.valid, True)
    def test_new_project_action_wrong_domain_id(self):
        """
        New project action where specifed domain id is not the same
        as the current user's domain id
        """

        user = mock.Mock()
        user.id = "test_user_id"
        user.name = "test_user"
        user.domain = 'default'

        project = mock.Mock()
        project.id = "parent_project"
        project.domain = "default"

        setup_temp_cache({project.id: project}, {user.id: user})

        task = Task.objects.create(ip_address="0.0.0.0",
                                   keystone_user={
                                       "user_id": "test_user_id",
                                       "project_id": "parent_project",
                                       "project_domain_id": 'default'
                                   })

        data = {
            'domain_id': 'notdefault',
            'parent_id': "parent_project",
            'project_name': 'test_project',
        }

        action = NewProjectAction(data, task=task, order=1)

        action.pre_approve()
        self.assertEquals(action.valid, False)

        action.post_approve()
        self.assertEquals(action.valid, False)

        action.submit({})
        self.assertEquals(action.valid, False)
Example #8
0
    def test_new_project_action_wrong_domain_id(self):
        """
        New project action where specifed domain id is not the same
        as the current user's domain id
        """

        project = fake_clients.FakeProject(name="parent_project")

        user = fake_clients.FakeUser(name="*****@*****.**",
                                     password="******",
                                     email="*****@*****.**")

        setup_identity_cache(projects=[project], users=[user])

        task = Task.objects.create(
            keystone_user={
                "user_id": user.id,
                "project_id": project.id,
                "project_domain_id": "default",
            })

        data = {
            "domain_id": "notdefault",
            "parent_id": project.id,
            "project_name": "test_project",
            "description": "",
        }

        action = NewProjectAction(data, task=task, order=1)

        action.prepare()
        self.assertEqual(action.valid, False)

        action.approve()
        self.assertEqual(action.valid, False)

        action.submit({})
        self.assertEqual(action.valid, False)