Ejemplo n.º 1
0
    def setUp(self):
        ServerTestCase.setUp(self)
        DatabaseTestCase.setUp(self)

        self.log = logging.getLogger(__name__)
        self.influx = InfluxDBClient(
            host=current_app.config['INFLUX_HOST'],
            port=current_app.config['INFLUX_PORT'],
            database=current_app.config['INFLUX_DB_NAME'],
        )

        self.influx.query('''create database %s''' %
                          current_app.config['INFLUX_DB_NAME'])

        self.logstore = init_influx_connection(
            self.log, {
                'REDIS_HOST': current_app.config['REDIS_HOST'],
                'REDIS_PORT': current_app.config['REDIS_PORT'],
                'REDIS_NAMESPACE': current_app.config['REDIS_NAMESPACE'],
                'INFLUX_HOST': current_app.config['INFLUX_HOST'],
                'INFLUX_PORT': current_app.config['INFLUX_PORT'],
                'INFLUX_DB_NAME': current_app.config['INFLUX_DB_NAME'],
            })

        user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(user['musicbrainz_id'])
        self.user = User.from_dbrow(user)

        weirduser = db_user.get_or_create(2, 'weird\\user name')
        self.weirduser = User.from_dbrow(weirduser)
Ejemplo n.º 2
0
 def setUp(self):
     ServerTestCase.setUp(self)
     DatabaseTestCase.setUp(self)
     self.user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(self.user['musicbrainz_id'])
     self.weirduser = db_user.get_or_create(2, 'weird\\user name')
     db_user.agree_to_gdpr(self.weirduser['musicbrainz_id'])
Ejemplo n.º 3
0
 def setUp(self):
     ServerTestCase.setUp(self)
     DatabaseTestCase.setUp(self)
     self.authorized_user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(self.authorized_user['musicbrainz_id'])
     self.unauthorized_user = db_user.get_or_create(2, 'blahblahblah')
     db_user.agree_to_gdpr(self.unauthorized_user['musicbrainz_id'])
    def test_menu_logged_in_error_dont_show_user_loaded(self, mock_user_get):
        """ If the user is logged in, if we show a 500 error, do not show the user menu
        If the user has previously been loaded in the view, check that it's not
        loaded while rendering the template"""

        user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(user['musicbrainz_id'])
        user = db_user.get_or_create(1, 'iliekcomputers')

        mock_user_get.return_value = user

        @self.app.route('/page_that_returns_500')
        @login_required
        def view500():
            # flask-login user is loaded during @login_required, so check that the db has been queried
            mock_user_get.assert_called_with(user['login_id'])
            raise InternalServerError('error')

        self.temporary_login(user['login_id'])
        resp = self.client.get('/page_that_returns_500')
        data = resp.data.decode('utf-8')
        self.assertIn('Import', data)
        # item not in user menu
        self.assertNotIn('My Listens', data)
        self.assertNotIn('Sign in', data)
        # Even after rendering the template, the database has only been queried once (before the exception)
        mock_user_get.assert_called_once()
        self.assertIsInstance(self.get_context_variable('current_user'),
                              listenbrainz.webserver.login.User)
Ejemplo n.º 5
0
 def setUp(self):
     super(ProfileViewsTestCase, self).setUp()
     self.user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(self.user['musicbrainz_id'])
     self.weirduser = db_user.get_or_create(2, 'weird\\user name')
     db_user.agree_to_gdpr(self.weirduser['musicbrainz_id'])
     self.service = SpotifyService()
Ejemplo n.º 6
0
    def test_menu_logged_in_error_show(self, mock_user_get):
        """ If the user is logged in, if we show a 400 or 404 error, show the user menu"""
        @self.app.route('/page_that_returns_400')
        def view400():
            raise BadRequest('bad request')

        @self.app.route('/page_that_returns_404')
        def view404():
            raise NotFound('not found')

        user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(user['musicbrainz_id'])
        user = db_user.get_or_create(1, 'iliekcomputers')
        mock_user_get.return_value = user
        self.temporary_login(user['id'])
        resp = self.client.get('/page_that_returns_400')
        data = resp.data.decode('utf-8')
        self.assert400(resp)

        # username (menu header)
        self.assertIn('iliekcomputers', data)
        self.assertIn('Import!', data)
        # item in user menu
        self.assertIn('Your Listens', data)
        mock_user_get.assert_called_with(user['id'])

        resp = self.client.get('/page_that_returns_404')
        data = resp.data.decode('utf-8')
        self.assert404(resp)
        # username (menu header)
        self.assertIn('iliekcomputers', data)
        self.assertIn('Import!', data)
        # item in user menu
        self.assertIn('Your Listens', data)
        mock_user_get.assert_called_with(user['id'])
Ejemplo n.º 7
0
    def setUp(self):
        self.server_url = "https://labs.api.listenbrainz.org/recording-mbid-lookup/json"
        super(CFRecommendationsViewsTestCase, self).setUp()
        self.user = db_user.get_or_create(1, 'vansika')
        db_user.agree_to_gdpr(self.user['musicbrainz_id'])
        self.user2 = db_user.get_or_create(2, 'vansika_1')
        self.user3 = db_user.get_or_create(3, 'vansika_2')

        # generate test data
        data = {"recording_mbid": []}

        for score in range(1500, 0, -1):
            data["recording_mbid"].append(
                {
                    "recording_mbid": str(uuid.uuid4()),
                    "score": score
                }
            )

        db_recommendations_cf_recording.insert_user_recommendation(
            2,
            UserRecommendationsJson(**{
                'top_artist': data['recording_mbid'],
                'similar_artist': []
            })
        )

        db_recommendations_cf_recording.insert_user_recommendation(
            3,
            UserRecommendationsJson(**{
                'top_artist': [],
                'similar_artist': data['recording_mbid']
            })
        )
    def setUp(self):
        self.server_url = "https://labs.api.listenbrainz.org/recording-mbid-lookup/json"
        ServerTestCase.setUp(self)
        DatabaseTestCase.setUp(self)
        self.user = db_user.get_or_create(1, 'vansika')
        db_user.agree_to_gdpr(self.user['musicbrainz_id'])
        self.user2 = db_user.get_or_create(2, 'vansika_1')
        self.user3 = db_user.get_or_create(3, 'vansika_2')

        # insert recommendations
        with open(self.path_to_data_file('cf_recommendations_db_data_for_api_test_recording.json'), 'r') as f:
            self.payload = json.load(f)

        db_recommendations_cf_recording.insert_user_recommendation(
            2,
            UserRecommendationsJson(**{
                'top_artist': self.payload['recording_mbid'],
                'similar_artist': []
            })
        )

        db_recommendations_cf_recording.insert_user_recommendation(
            3,
            UserRecommendationsJson(**{
                'top_artist': [],
                'similar_artist': self.payload['recording_mbid']
            })
        )
Ejemplo n.º 9
0
 def setUp(self):
     ServerTestCase.setUp(self)
     DatabaseTestCase.setUp(self)
     self.authorized_user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(self.authorized_user['musicbrainz_id'])
     self.unauthorized_user = db_user.get_or_create(2, 'blahblahblah')
     db_user.agree_to_gdpr(self.unauthorized_user['musicbrainz_id'])
Ejemplo n.º 10
0
    def setUp(self):
        super().setUp()
        self.user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(self.user['musicbrainz_id'])

        # Initialize brainzutils cache
        init_cache(host=current_app.config['REDIS_HOST'],
                   port=current_app.config['REDIS_PORT'],
                   namespace=current_app.config['REDIS_NAMESPACE'])
        self.redis = cache._r
Ejemplo n.º 11
0
    def setUp(self):
        super(UserViewsTestCase, self).setUp()

        self.log = logging.getLogger(__name__)
        self.logstore = timescale_connection._ts

        user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(user['musicbrainz_id'])
        self.user = User.from_dbrow(user)

        weirduser = db_user.get_or_create(2, 'weird\\user name')
        self.weirduser = User.from_dbrow(weirduser)

        abuser = db_user.get_or_create(3, 'abuser')
        self.abuser = User.from_dbrow(abuser)
Ejemplo n.º 12
0
    def test_menu_logged_in(self, mock_user_get):
        """ If the user is logged in, check that we perform a database query to get user data """
        user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(user['musicbrainz_id'])
        user = db_user.get_or_create(1, 'iliekcomputers')

        mock_user_get.return_value = user
        self.temporary_login(user['id'])
        resp = self.client.get(url_for('index.index'))
        data = resp.data.decode('utf-8')

        # username (menu header)
        self.assertIn('iliekcomputers', data)
        self.assertIn('Import!', data)
        # item in user menu
        self.assertIn('Your Listens', data)
        mock_user_get.assert_called_with(user['id'])
    def test_menu_logged_in_error_dont_show_no_user(self, mock_user_get):
        """ If the user is logged in, if we show a 500 error, do not show the user menu
            Don't query the database to get a current_user for the template context"""
        @self.app.route('/page_that_returns_500')
        def view500():
            raise InternalServerError('error')

        user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(user['musicbrainz_id'])
        user = db_user.get_or_create(1, 'iliekcomputers')
        mock_user_get.return_value = user
        self.temporary_login(user['login_id'])
        resp = self.client.get('/page_that_returns_500')
        data = resp.data.decode('utf-8')
        # item not in user menu
        self.assertNotIn('My Listens', data)
        self.assertNotIn('Sign in', data)
        self.assertIn('Import', data)
Ejemplo n.º 14
0
    def setUp(self):
        ServerTestCase.setUp(self)
        DatabaseTestCase.setUp(self)

        self.log = logging.getLogger(__name__)
        self.logstore = init_timescale_connection(self.log, {
            'REDIS_HOST': current_app.config['REDIS_HOST'],
            'REDIS_PORT': current_app.config['REDIS_PORT'],
            'REDIS_NAMESPACE': current_app.config['REDIS_NAMESPACE'],
            'SQLALCHEMY_TIMESCALE_URI': self.app.config['SQLALCHEMY_TIMESCALE_URI']
        })

        user = db_user.get_or_create(1, 'iliekcomputers')
        db_user.agree_to_gdpr(user['musicbrainz_id'])
        self.user = User.from_dbrow(user)

        weirduser = db_user.get_or_create(2, 'weird\\user name')
        self.weirduser = User.from_dbrow(weirduser)
Ejemplo n.º 15
0
def gdpr_notice():
    if request.method == 'GET':
        return render_template('index/gdpr.html', next=request.args.get('next'))
    elif request.method == 'POST':
        if request.form.get('gdpr-options') == 'agree':
            try:
                db_user.agree_to_gdpr(current_user.musicbrainz_id)
            except DatabaseException as e:
                flash.error('Could not store agreement to GDPR terms')
            next = request.form.get('next')
            if next:
                return redirect(next)
            return redirect(url_for('index.index'))
        elif request.form.get('gdpr-options') == 'disagree':
            return redirect(url_for('profile.delete'))
        else:
            flash.error('You must agree to or decline our terms')
            return render_template('index/gdpr.html', next=request.args.get('next'))
 def setUp(self):
     ServerTestCase.setUp(self)
     DatabaseTestCase.setUp(self)
     self.user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(self.user['musicbrainz_id'])
     self.user2 = db_user.get_or_create(2, 'iliekcomputers_2')
     db_user.agree_to_gdpr(self.user2['musicbrainz_id'])
     self.user3 = db_user.get_or_create(3, 'iliekcomputers_3')
     db_user.agree_to_gdpr(self.user3['musicbrainz_id'])
Ejemplo n.º 17
0
 def test_feed_page_404s_for_non_devs(self):
     user = db_user.get_or_create(1, 'iamnotadev')
     db_user.agree_to_gdpr(user['musicbrainz_id'])
     self.temporary_login(user['login_id'])
     r = self.client.get('/feed')
     self.assert404(r)
 def setUp(self):
     super().setUp()
     self.user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(self.user['musicbrainz_id'])
Ejemplo n.º 19
0
 def setUp(self):
     IntegrationTestCase.setUp(self)
     TimescaleTestCase.setUp(self)
     self.user = db_user.get_or_create(1, 'testuserpleaseignore')
     db_user.agree_to_gdpr(self.user['musicbrainz_id'])
     self.user2 = db_user.get_or_create(2, 'all_muppets_all_of_them')
 def setUp(self):
     super().setUp()
     self.user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(self.user['musicbrainz_id'])
Ejemplo n.º 21
0
 def test_feed_page(self):
     user = db_user.get_or_create(1, 'iliekcomputers')
     db_user.agree_to_gdpr(user['musicbrainz_id'])
     self.temporary_login(user['login_id'])
     r = self.client.get('/feed/')
     self.assert200(r)