Beispiel #1
0
    def test_raises_if_user_reached_limit_of_permitted_syncs(
            self, channel, mocker):
        for idx in range(settings.CHANNEL_SYNCS_MAX_PER_USER):
            external_source_channel_id = f'{EXTERNAL_SOURCE_CHANNEL_ID}_{idx}'
            mocker.patch(
                'veems.channel_sync.external_sources.'
                'youtube.get_channel_id_from_url',
                return_value=external_source_channel_id,
            )
            services.create_channel_sync(
                external_source='youtube',
                external_source_channel_url=(
                    f'https://youtube.com/channel/{external_source_channel_id}'
                ),
                destination_channel_id=channel.id,
                user_id=channel.user_id,
            )
        with pytest.raises(DRFValidationError):
            services.create_channel_sync(
                external_source='youtube',
                external_source_channel_url=(
                    f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'
                ),
                destination_channel_id=channel.id,
                user_id=channel.user_id,
            )

        assert (len(services.get_all_channel_syncs()) ==
                settings.CHANNEL_SYNCS_MAX_PER_USER)
Beispiel #2
0
 def test_raises_if_channel_url_is_invalid(self, channel, mocker):
     mocker.patch(
         'veems.channel_sync.external_sources.'
         'youtube.get_channel_id_from_url',
         side_effect=LookupError,
     )
     with pytest.raises(DRFValidationError):
         services.create_channel_sync(
             external_source_channel_url='https://not_valid',
             destination_channel_id=channel.id,
             user_id=channel.user_id,
         )
Beispiel #3
0
    def test_raises_if_external_source_is_invalid(self, channel):
        with pytest.raises(DRFValidationError):
            services.create_channel_sync(
                external_source='INVALID',
                external_source_channel_url=(
                    f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'
                ),
                destination_channel_id=channel.id,
                user_id=channel.user_id,
            )

        assert len(services.get_all_channel_syncs()) == 0
Beispiel #4
0
    def test_raises_if_trying_to_create_sync_against_another_users_channel(
            self, channel, user_factory):
        with pytest.raises(ObjectDoesNotExist):
            services.create_channel_sync(
                external_source='youtube',
                external_source_channel_url=(
                    f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'
                ),
                destination_channel_id=channel.id,
                # Another user
                user_id=user_factory().id,
            )

        assert len(services.get_all_channel_syncs()) == 0
Beispiel #5
0
    def test_raises_if_destination_channel_is_terminated(self, channel):
        moderation_services.terminate_channel(channel_id=channel.id,
                                              reason='x',
                                              notify=False)

        with pytest.raises(PermissionDenied):
            services.create_channel_sync(
                external_source='youtube',
                external_source_channel_url=(
                    f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'
                ),
                destination_channel_id=channel.id,
                user_id=channel.user_id,
            )
Beispiel #6
0
    def test_raises_if_trying_to_create_duplicates(self, channel):
        services.create_channel_sync(
            external_source='youtube',
            external_source_channel_url=(
                f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'),
            destination_channel_id=channel.id,
            user_id=channel.user_id,
        )

        with pytest.raises(IntegrityError):
            services.create_channel_sync(
                external_source='youtube',
                external_source_channel_url=(
                    f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'
                ),
                destination_channel_id=channel.id,
                user_id=channel.user_id,
            )

        assert len(services.get_all_channel_syncs()) == 1
Beispiel #7
0
 def make(**kwargs):
     base_kwargs = dict(
         external_source_channel_url=(
             'https://youtube.com/channel/'
             f'{external_source_channel_id_which_can_be_synced}'),
         external_source='youtube',
         destination_channel_id=channel.id,
         user_id=channel.user_id,
     )
     base_kwargs.update(kwargs)
     return channel_sync_services.create_channel_sync(**base_kwargs)
Beispiel #8
0
def test_get_channel_sync(channel):
    channel_sync = services.create_channel_sync(
        external_source='youtube',
        external_source_channel_url=(
            f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'),
        destination_channel_id=channel.id,
        user_id=channel.user_id,
    )

    record = services.get_channel_sync(id=channel_sync.id)

    assert record == channel_sync
Beispiel #9
0
    def test(self, channel):
        channel_sync_record = services.create_channel_sync(
            external_source='youtube',
            external_source_channel_url=(
                f'https://youtube.com/channel/{EXTERNAL_SOURCE_CHANNEL_ID}'),
            destination_channel_id=channel.id,
            user_id=channel.user_id,
        )

        channel_sync_record.refresh_from_db()
        assert isinstance(channel_sync_record, services.models.ChannelSync)
        assert channel_sync_record.external_source == 'youtube'
        assert (channel_sync_record.external_source_channel_id ==
                EXTERNAL_SOURCE_CHANNEL_ID)
        assert channel_sync_record.external_source_channel_name == (
            'Channel title')
        assert channel_sync_record.destination_channel_id == channel.id
        assert channel_sync_record.is_enabled is True
        assert channel_sync_record.external_source_data_ingesting is True
        # Won't be set until ``sync`` background task runs.
        assert channel_sync_record.is_syncing is False
        assert channel_sync_record.meets_minimum_requirements is None
        self.mock_sync.delay.assert_called_once_with(
            channel_sync_id=channel_sync_record.id, external_source='youtube')