def test_can_switch_membership_of_an_inactive_profile(
            self, client, profile, mdm_group):
        profile = Profile(**profile)
        profile.status = ProfileStatus.INACTIVE
        mdm_group = MDMGroup(**mdm_group)

        cdatabase.db_session.add(profile)
        cdatabase.db_session.add(mdm_group)
        cdatabase.db_session.commit()

        res = client.put(
            url_for('api_app.mdmgroupresource_profile',
                    id=mdm_group.id,
                    profile_id=profile.id))

        assert self.assert_json(res.headers)
        assert self.assert_success(res)
        data = json.loads(res.data)
        assert data['message'] == "Success"

        res = client.delete(
            url_for('api_app.mdmgroupresource_profile',
                    id=mdm_group.id,
                    profile_id=profile.id))

        assert self.assert_json(res.headers)
        assert self.assert_success(res)
        data = json.loads(res.data)
        assert data['message'] == "Success"
    def test_when_device_is_removed_from_group_profiles_are_removed(self, client, device, profile, mdm_group):
        device = Device(**device)
        profile = Profile(**profile)
        profile_service = mock.MagicMock()

        # FIXME: there has to be a better way...
        original_profile_service = capi.ProfileService
        capi.ProfileService = mock.MagicMock()
        capi.ProfileService.return_value = profile_service

        mdm_group = MDMGroup(**mdm_group)
        profile.status = ProfileStatus.ACTIVE
        mdm_group.devices.append(device)
        mdm_group.profiles.append(profile)
        cdatabase.db_session.add(device)
        cdatabase.db_session.add(profile)
        cdatabase.db_session.add(mdm_group)
        cdatabase.db_session.commit()

        try:
            capi.ProfileService = mock.MagicMock()
            capi.ProfileService.return_value = profile_service
            res = client.delete(url_for('api_app.mdmgroupresource_device', id=mdm_group.id, device_id=device.id))
        finally:
            capi.ProfileService = original_profile_service

        assert self.assert_json(res.headers)
        assert self.assert_success(res)
        data = json.loads(res.data)
        assert data['message'] == "Success"
        profile_service.finalize_removal.assert_called_once_with(profile, device)
Exemple #3
0
    def test_delete(self, client, profile):
        profile_dict = profile
        for status in list(ProfileStatus):
            profile = Profile(**profile_dict)
            profile.status = status
            cdatabase.db_session.add(profile)
            cdatabase.db_session.commit()
            profile_id = profile.id

            res = client.delete(url_for('api_app.profileresource', id=profile_id))

            res = client.get(url_for('api_app.profileresource', id=profile_id))
            assert self.assert_json(res.headers)

            deleted = False
            if status == ProfileStatus.ACTIVE:
                assert self.assert_success(res)
                assert profile.status == ProfileStatus.PENDING_DELETION
            elif status == ProfileStatus.INACTIVE:
                assert res.status_code == 404
                deleted = True
            else:
                assert profile.status == status

            if not deleted:
                cdatabase.db_session.delete(profile)
                cdatabase.db_session.commit()
Exemple #4
0
    def test_undeploy_works_only_if_active(self, client, profile, app):
        profile = Profile(**profile)

        redis_client = app.redis_store._redis_client

        cdatabase.db_session.add(profile)
        cdatabase.db_session.commit()

        for status in list(ProfileStatus):
            redis_client.flushall()
            profile.status = status
            cdatabase.db_session.commit()
            res = client.delete(url_for('api_app.profileresource_deploy', id=profile.id))
            assert self.assert_json(res.headers)

            if status == ProfileStatus.ACTIVE:
                assert self.assert_success(res)
                assert profile.status == ProfileStatus.PENDING_REMOVAL
                assert get_queued_jobs(redis_client) == ['commandment.tasks.process_profile_deployment_change(%d)' % profile.id]
            elif status == ProfileStatus.INACTIVE:
                assert self.assert_success(res)
                assert profile.status == ProfileStatus.INACTIVE
                assert get_queued_jobs(redis_client) == []
            else:
                assert res.status_code == 400
                assert profile.status == status
                assert get_queued_jobs(redis_client) == []
    def test_delete(self, client, device):
        res = client.put(url_for('api_app.deviceresource'), data=device)
        data = json.loads(res.data)

        res = client.delete(url_for('api_app.deviceresource', id=data['id']))

        res = client.get(url_for('api_app.deviceresource', id=data['id']))

        assert res.status_code == 404
    def test_delete(self, client, mdm_group):
        res = client.put(url_for('api_app.mdmgroupresource'), data=mdm_group)
        data = json.loads(res.data)

        res = client.delete(url_for('api_app.mdmgroupresource', id=data['id']))

        res = client.get(url_for('api_app.mdmgroupresource', id=data['id']))

        assert res.status_code == 404
    def test_can_switch_membership_of_an_inactive_profile(self, client, profile, mdm_group):
        profile = Profile(**profile)
        profile.status = ProfileStatus.INACTIVE
        mdm_group = MDMGroup(**mdm_group)

        cdatabase.db_session.add(profile)
        cdatabase.db_session.add(mdm_group)
        cdatabase.db_session.commit()

        res = client.put(url_for('api_app.mdmgroupresource_profile', id=mdm_group.id, profile_id=profile.id))

        assert self.assert_json(res.headers)
        assert self.assert_success(res)
        data = json.loads(res.data)
        assert data['message'] == "Success"

        res = client.delete(url_for('api_app.mdmgroupresource_profile', id=mdm_group.id, profile_id=profile.id))

        assert self.assert_json(res.headers)
        assert self.assert_success(res)
        data = json.loads(res.data)
        assert data['message'] == "Success"
    def test_when_device_is_removed_from_group_profiles_are_removed(
            self, client, device, profile, mdm_group):
        device = Device(**device)
        profile = Profile(**profile)
        profile_service = mock.MagicMock()

        # FIXME: there has to be a better way...
        original_profile_service = capi.ProfileService
        capi.ProfileService = mock.MagicMock()
        capi.ProfileService.return_value = profile_service

        mdm_group = MDMGroup(**mdm_group)
        profile.status = ProfileStatus.ACTIVE
        mdm_group.devices.append(device)
        mdm_group.profiles.append(profile)
        cdatabase.db_session.add(device)
        cdatabase.db_session.add(profile)
        cdatabase.db_session.add(mdm_group)
        cdatabase.db_session.commit()

        try:
            capi.ProfileService = mock.MagicMock()
            capi.ProfileService.return_value = profile_service
            res = client.delete(
                url_for('api_app.mdmgroupresource_device',
                        id=mdm_group.id,
                        device_id=device.id))
        finally:
            capi.ProfileService = original_profile_service

        assert self.assert_json(res.headers)
        assert self.assert_success(res)
        data = json.loads(res.data)
        assert data['message'] == "Success"
        profile_service.finalize_removal.assert_called_once_with(
            profile, device)
def test_delete(client):
    """Can we DELETE a resource?"""
    response = client.delete('/album/1')
    assert response.status_code == 204
    response = client.get('/album/1')
    assert response.status_code == 404
Exemple #10
0
def test_validate_delete(client):
    """Do we get back an error message when making a DELETE request that fails
    validation?"""
    response = client.delete('/user/1')
    assert response.status_code == 400
    assert response.json['message'] == INVALID_ACTION_MESSAGE
Exemple #11
0
def test_delete(client):
    """Can we DELETE a resource?"""
    response = client.delete('/album/1')
    assert response.status_code == 204
    response = client.get('/album/1')
    assert response.status_code == 404
Exemple #12
0
def test_validate_delete(client):
    """Do we get back an error message when making a DELETE request that fails
    validation?"""
    response = client.delete('/user/1')
    assert response.status_code == 400
    assert response.json['message'] == INVALID_ACTION_MESSAGE