コード例 #1
0
def _instance_data(user, instance=None):
    if instance is None:
        instance = factories.InstanceFactory()
    factories.FloatingIPFactory(
        service_project_link=instance.service_project_link, status='DOWN')
    image = factories.ImageFactory(
        settings=instance.service_project_link.service.settings)
    flavor = factories.FlavorFactory(
        settings=instance.service_project_link.service.settings)
    ssh_public_key = structure_factories.SshPublicKeyFactory(user=user)
    return {
        'name':
        'test_host',
        'description':
        'test description',
        'flavor':
        factories.FlavorFactory.get_url(flavor),
        'image':
        factories.ImageFactory.get_url(image),
        'service_project_link':
        factories.OpenStackServiceProjectLinkFactory.get_url(
            instance.service_project_link),
        'ssh_public_key':
        structure_factories.SshPublicKeyFactory.get_url(ssh_public_key),
        'system_volume_size':
        image.min_disk
    }
コード例 #2
0
 def test_any_user_can_get_shared_key(self):
     self.client.force_authenticate(self.user)
     shared_key = factories.SshPublicKeyFactory(user=self.staff,
                                                is_shared=True)
     url = factories.SshPublicKeyFactory.get_url(shared_key)
     response = self.client.get(url)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
コード例 #3
0
    def test_user_cannot_delete_shared_key(self):
        shared_key = factories.SshPublicKeyFactory(user=self.staff,
                                                   is_shared=True)
        self.client.force_authenticate(self.user)

        response = self.client.delete(
            factories.SshPublicKeyFactory.get_url(shared_key))
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
コード例 #4
0
    def test_user_cannot_add_ssh_key_with_duplicate_fingerprint(self):
        staff = factories.UserFactory(is_staff=True)
        key = factories.SshPublicKeyFactory()
        data = {
            'name': 'test',
            'public_key': key.public_key,
        }

        self.client.force_authenticate(staff)
        response = self.client.post(factories.SshPublicKeyFactory.get_list_url(), data=data)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertFalse(core_models.SshPublicKey.objects.filter(**data).exists())
コード例 #5
0
def _instance_data(user, instance=None):
    if instance is None:
        instance = factories.InstanceFactory()
    flavor = factories.FlavorFactory(
        cloud=instance.cloud_project_membership.cloud)
    ssh_public_key = structure_factories.SshPublicKeyFactory(user=user)
    return {
        'name': 'test_host',
        'description': 'test description',
        'project': _project_url(instance.cloud_project_membership.project),
        'template': _template_url(instance.template),
        'flavor': _flavor_url(flavor),
        'ssh_public_key': _ssh_public_key_url(ssh_public_key)
    }
コード例 #6
0
    def setUp(self):
        self.template = factories.TemplateFactory()
        self.flavor = factories.FlavorFactory()
        self.project = structure_factories.ProjectFactory()
        self.ssh_public_key = structure_factories.SshPublicKeyFactory()
        self.membership = factories.CloudProjectMembershipFactory(
            cloud=self.flavor.cloud,
            project=self.project,
        )

        factories.ImageFactory(template=self.template, cloud=self.flavor.cloud)
        factories.FloatingIPFactory(status='DOWN',
                                    cloud_project_membership=self.membership,
                                    address='10.10.10.10')
コード例 #7
0
    def test_create_and_delete_key(self, mocked_task):
        # Create SSH key
        ssh_key = structure_factories.SshPublicKeyFactory(user=self.owner)
        self.assert_task_called(mocked_task,
                                'nodeconductor.structure.push_ssh_public_key',
                                ssh_key.uuid.hex)

        # Delete SSH key
        self.client.force_authenticate(self.owner)
        self.client.delete(
            structure_factories.SshPublicKeyFactory.get_url(ssh_key))
        self.assert_task_called(
            mocked_task, 'nodeconductor.structure.remove_ssh_public_key',
            serialize_ssh_key(ssh_key))
コード例 #8
0
    def setUp(self):
        self.fixture = EstimationFixture()
        self.template = self.fixture.template

        self.private_settings = self.fixture.private_settings
        self.private_service = self.fixture.private_service

        self.private_link = self.fixture.private_link
        self.private_link_url = tenant_factories.OpenStackTenantServiceProjectLinkFactory.get_url(
            self.private_link)

        self.image = self.fixture.image
        self.image_url = tenant_factories.ImageFactory.get_url(self.image)

        self.flavor = self.fixture.flavor
        self.flavor_url = tenant_factories.FlavorFactory.get_url(self.flavor)

        self.subnet = self.fixture.subnet
        self.subnet_url = tenant_factories.SubNetFactory.get_url(self.subnet)

        self.prices = self.fixture.prices

        self.playbook = factories.PlaybookFactory()
        self.playbook_url = factories.PlaybookFactory.get_url(self.playbook)

        self.ssh_public_key = structure_factories.SshPublicKeyFactory(
            user=self.fixture.owner)
        self.ssh_public_key_url = structure_factories.SshPublicKeyFactory.get_url(
            self.ssh_public_key)

        self.path_patcher = mock.patch('os.path.exists')
        self.path_api = self.path_patcher.start()
        self.path_api.side_effect = lambda f: f == self.playbook.get_playbook_path(
        )

        self.subprocess_patcher = mock.patch('subprocess.check_output')
        self.subprocess_api = self.subprocess_patcher.start()

        self.subprocess_api.return_value = self.get_valid_output()
コード例 #9
0
    def test_grant_and_revoke_user_from_project(self, mocked_task):
        user = structure_factories.UserFactory()
        ssh_key = structure_factories.SshPublicKeyFactory(user=user)

        # Grant user in project
        self.project.add_user(user, ProjectRole.ADMINISTRATOR)
        self.assert_task_called(mocked_task,
                                'nodeconductor.structure.push_ssh_public_key',
                                ssh_key.uuid.hex)

        self.assert_task_called(mocked_task,
                                'nodeconductor.structure.add_user',
                                user.uuid.hex)

        # Revoke user in project
        self.project.remove_user(user)
        self.assert_task_called(
            mocked_task, 'nodeconductor.structure.remove_ssh_public_key',
            serialize_ssh_key(ssh_key))

        self.assert_task_called(mocked_task,
                                'nodeconductor.structure.remove_user',
                                serialize_user(user))
コード例 #10
0
 def test_user_cannot_delete_other_users_key(self):
     other_key = factories.SshPublicKeyFactory()
     self.client.force_authenticate(self.user)
     response = self.client.delete(factories.SshPublicKeyFactory.get_url(other_key))
     self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
コード例 #11
0
 def setUp(self):
     self.staff = factories.UserFactory(is_staff=True)
     self.user = factories.UserFactory()
     self.user_key = factories.SshPublicKeyFactory(user=self.user)
コード例 #12
0
ファイル: test_tasks.py プロジェクト: p-p-m/nodeconductor
 def setUp(self):
     self.link = openstack_factories.OpenStackServiceProjectLinkFactory(
         state=SynchronizationStates.IN_SYNC)
     self.link_str = self.link.to_string()
     self.ssh_key = structure_factories.SshPublicKeyFactory()
コード例 #13
0
 def test_user_can_not_get_other_key(self):
     self.client.force_authenticate(self.user)
     shared_key = factories.SshPublicKeyFactory(user=self.staff)
     url = factories.SshPublicKeyFactory.get_url(shared_key)
     response = self.client.get(url)
     self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)