Example #1
0
 def serialize(self, request, app):
     full_data = SearchView.serialize(self, request, app)
     data = {}
     for k in SEARCH_FIELDS:
         data[k] = full_data.get(k)
     # For translated fields, just return the default locale.
     data['name'] = get_translations(full_data, 'name',
                                     full_data['default_locale'],
                                     full_data['default_locale'])
     # Add reviewer-specific stuff that's not in the standard dehydrate.
     data['latest_version'] = app.latest_version
     data['is_escalated'] = app.is_escalated
     return data
Example #2
0
class TestGetRegion(TestCase):
    fixtures = fixture('user_2519', 'webapp_337141')

    def setUp(self):
        self.resource = SearchView()
        self.factory = RequestFactory()
        self.profile = UserProfile.objects.get(pk=2519)
        self.user = self.profile.user

    def region_for(self, region):
        req = self.factory.get('/', ({} if region is None else {
            'region': region
        }))
        req.API = True
        req.LANG = ''
        req.user = self.user
        req.amo_user = self.profile
        RegionMiddleware().process_request(req)
        ACLMiddleware().process_request(req)
        return self.resource.get_region(req)

    @patch('mkt.regions.middleware.RegionMiddleware.region_from_request')
    def test_get_region_all(self, mock_request_region):
        geoip_fallback = regions.PE  # Different than the default (restofworld).
        mock_request_region.return_value = geoip_fallback

        # Test string values (should return region with that slug).
        eq_(self.region_for('restofworld'), regions.RESTOFWORLD)
        eq_(self.region_for('us'), regions.US)

        # Test fallback to request.REGION (should return GeoIP region if region
        # isn't specified or is specified and empty).
        eq_(self.region_for(None), geoip_fallback)
        eq_(self.region_for(''), geoip_fallback)

        # Test fallback to restofworld (e.g. if GeoIP fails).
        with patch('mkt.regions.middleware.RegionMiddleware.'
                   'process_request') as mock_process_request:
            eq_(self.region_for(None), regions.RESTOFWORLD)
            ok_(mock_process_request.called)

    def test_get_region_none(self):
        eq_(self.region_for('None'), None)

    def test_get_region_worldwide(self):
        eq_(self.region_for('worldwide'), regions.RESTOFWORLD)
Example #3
0
class TestGetRegion(TestCase):
    fixtures = fixture('user_2519', 'webapp_337141')

    def setUp(self):
        self.resource = SearchView()
        self.factory = RequestFactory()
        self.profile = UserProfile.objects.get(pk=2519)
        self.user = self.profile.user

    def region_for(self, region):
        req = self.factory.get('/', ({} if region is None else
                                     {'region': region}))
        req.API = True
        req.LANG = ''
        req.user = self.user
        req.amo_user = self.profile
        RegionMiddleware().process_request(req)
        ACLMiddleware().process_request(req)
        return self.resource.get_region(req)

    @patch('mkt.regions.middleware.RegionMiddleware.region_from_request')
    def test_get_region_all(self, mock_request_region):
        geoip_fallback = regions.PE  # Different than the default (restofworld).
        mock_request_region.return_value = geoip_fallback

        # Test string values (should return region with that slug).
        eq_(self.region_for('restofworld'), regions.RESTOFWORLD)
        eq_(self.region_for('us'), regions.US)

        # Test fallback to request.REGION (should return GeoIP region if region
        # isn't specified or is specified and empty).
        eq_(self.region_for(None), geoip_fallback)
        eq_(self.region_for(''), geoip_fallback)

        # Test fallback to restofworld (e.g. if GeoIP fails).
        with patch('mkt.regions.middleware.RegionMiddleware.'
                   'process_request') as mock_process_request:
            eq_(self.region_for(None), regions.RESTOFWORLD)
            ok_(mock_process_request.called)

    def test_get_region_none(self):
        eq_(self.region_for('None'), None)

    def test_get_region_worldwide(self):
        eq_(self.region_for('worldwide'), regions.RESTOFWORLD)
Example #4
0
 def setUp(self):
     self.resource = SearchView()
     self.factory = RequestFactory()
     self.profile = UserProfile.objects.get(pk=2519)
     self.user = self.profile.user
Example #5
0
class TestGetRegion(TestCase):
    fixtures = fixture('user_2519', 'webapp_337141')

    def setUp(self):
        self.resource = SearchView()
        self.factory = RequestFactory()
        self.profile = UserProfile.objects.get(pk=2519)
        self.user = self.profile.user

    def region_for(self, region):
        req = self.factory.get('/', ({} if region is None else
                                     {'region': region}))
        req.API = True
        req.LANG = ''
        req.user = self.user
        req.amo_user = self.profile
        RegionMiddleware().process_request(req)
        ACLMiddleware().process_request(req)
        return self.resource.get_region(req)

    def give_permission(self):
        self.grant_permission(self.profile, 'Regions:BypassFilters')

    def make_curator(self):
        collection = Collection.objects.create(
            collection_type=COLLECTIONS_TYPE_BASIC)
        collection.curators.add(self.profile)

    @patch('mkt.regions.middleware.RegionMiddleware.region_from_request')
    def test_get_region_all(self, mock_request_region):
        self.give_permission()
        geoip_fallback = regions.PE  # Different than the default (worldwide).
        mock_request_region.return_value = geoip_fallback.slug

        # Test none-ish values (should return None, i.e. no region).
        eq_(self.region_for('None'), None)

        # Test string values (should return region with that slug).
        eq_(self.region_for('worldwide'), regions.WORLDWIDE)
        eq_(self.region_for('us'), regions.US)

        # Test fallback to request.REGION (should return GeoIP region if region
        # isn't specified or is specified and empty).
        eq_(self.region_for(None), geoip_fallback)
        eq_(self.region_for(''), geoip_fallback)

        # Test fallback to worldwide (e.g. if GeoIP fails).
        with patch('mkt.regions.middleware.RegionMiddleware.'
                   'process_request') as mock_process_request:
            eq_(self.region_for(None), regions.WORLDWIDE)
            ok_(mock_process_request.called)

        # Test invalid value (should raise exception).
        with self.assertRaises(ParseError):
            self.region_for('cvanland')  # Scary place

    def test_get_region_permission(self):
        self.give_permission()
        eq_(self.region_for('None'), None)
        eq_(self.region_for('us'), regions.US)

    def test_collection_curator(self):
        self.make_curator()
        eq_(self.region_for('None'), None)
        eq_(self.region_for('us'), regions.US)

    def test_no_permission_not_curator(self):
        with self.assertRaises(PermissionDenied):
            eq_(self.region_for('None'), None)
        eq_(self.region_for('us'), regions.US)
Example #6
0
 def setUp(self):
     self.resource = SearchView()
     self.factory = RequestFactory()
     self.profile = UserProfile.objects.get(pk=2519)
     self.user = self.profile.user
Example #7
0
    services.register(r'error', ErrorViewSet, base_name='error')

services.register(r'carrier', CarrierViewSet, base_name='carriers')
services.register(r'region', RegionViewSet, base_name='regions')
services.register(r'price-tier', PriceTierViewSet,
              base_name='price-tier')
services.register(r'price-currency', PriceCurrencyViewSet,
              base_name='price-currency')

urlpatterns = patterns('',
    url('', include('mkt.fireplace.urls')),
    url(r'^apps/', include(apps.urls)),
    url(r'^apps/app/', include(subapps.urls)),
    url(r'^apps/search/featured/', FeaturedSearchView.as_view(),
        name='featured-search-api'),
    url(r'^apps/search/', SearchView.as_view(), name='search-api'),
    url(r'^apps/suggest/', SuggestionsView.as_view(),
        name='suggestions-api'),
    url(r'^services/', include(services.urls)),
    url(r'^services/config/site/', site_config, name='site-config'),
    url(r'^fireplace/report_error/\d*', error_reporter, name='error-reporter'),
    url(r'^rocketfuel/', include(rocketfuel.urls)),
    url(r'^rocketfuel/collections/', include(subcollections.urls)),
    url(r'^apps/', include('mkt.versions.urls')),
    url(r'^apps/', include('mkt.ratings.urls')),
    url(r'^apps/features/', AppFeaturesList.as_view(),
        name='api-features-feature-list'),
    url('', include(abuse_api_patterns)),
    url('', include(account_api_patterns)),
    url('', include('mkt.installs.urls')),
    url('', include(reviewer_api_patterns)),
Example #8
0
class TestGetRegion(TestCase):
    fixtures = fixture('user_2519', 'webapp_337141')

    def setUp(self):
        self.resource = SearchView()
        self.factory = RequestFactory()
        self.profile = UserProfile.objects.get(pk=2519)
        self.user = self.profile.user

    def region_for(self, region):
        req = self.factory.get('/', ({} if region is None else {
            'region': region
        }))
        req.API = True
        req.LANG = ''
        req.user = self.user
        req.amo_user = self.profile
        RegionMiddleware().process_request(req)
        ACLMiddleware().process_request(req)
        return self.resource.get_region(req)

    def give_permission(self):
        self.grant_permission(self.profile, 'Regions:BypassFilters')

    def make_curator(self):
        collection = Collection.objects.create(
            collection_type=COLLECTIONS_TYPE_BASIC)
        collection.curators.add(self.profile)

    @patch('mkt.regions.middleware.RegionMiddleware.region_from_request')
    def test_get_region_all(self, mock_request_region):
        self.give_permission()
        geoip_fallback = regions.PE  # Different than the default (restofworld).
        mock_request_region.return_value = geoip_fallback

        # Test none-ish values (should return None, i.e. no region).
        eq_(self.region_for('None'), None)

        # Test string values (should return region with that slug).
        eq_(self.region_for('restofworld'), regions.RESTOFWORLD)
        eq_(self.region_for('us'), regions.US)

        # Test fallback to request.REGION (should return GeoIP region if region
        # isn't specified or is specified and empty).
        eq_(self.region_for(None), geoip_fallback)
        eq_(self.region_for(''), geoip_fallback)

        # Test fallback to restofworld (e.g. if GeoIP fails).
        with patch('mkt.regions.middleware.RegionMiddleware.'
                   'process_request') as mock_process_request:
            eq_(self.region_for(None), regions.RESTOFWORLD)
            ok_(mock_process_request.called)

        # Test invalid value (should raise exception).
        with self.assertRaises(ParseError):
            self.region_for('cvanland')  # Scary place

    def test_get_region_permission(self):
        self.give_permission()
        eq_(self.region_for('None'), None)
        eq_(self.region_for('us'), regions.US)

    def test_get_region_worldwide(self):
        self.give_permission()
        eq_(self.region_for('worldwide'), regions.RESTOFWORLD)

    def test_collection_curator(self):
        self.make_curator()
        eq_(self.region_for('None'), None)
        eq_(self.region_for('us'), regions.US)

    def test_no_permission_not_curator(self):
        with self.assertRaises(PermissionDenied):
            eq_(self.region_for('None'), None)
        eq_(self.region_for('us'), regions.US)
Example #9
0
services.register(r'carrier', CarrierViewSet, base_name='carriers')
services.register(r'region', RegionViewSet, base_name='regions')
services.register(r'price-tier', PriceTierViewSet, base_name='price-tier')
services.register(r'price-currency',
                  PriceCurrencyViewSet,
                  base_name='price-currency')

urlpatterns = patterns(
    '',
    url('', include('mkt.fireplace.urls')),
    url(r'^apps/', include(apps.urls)),
    url(r'^apps/app/', include(subapps.urls)),
    url(r'^apps/search/featured/',
        FeaturedSearchView.as_view(),
        name='featured-search-api'),
    url(r'^apps/search/', SearchView.as_view(), name='search-api'),
    url(r'^apps/suggest/', SuggestionsView.as_view(), name='suggestions-api'),
    url(r'^services/', include(services.urls)),
    url(r'^services/config/site/', site_config, name='site-config'),
    url(r'^fireplace/report_error', error_reporter, name='error-reporter'),
    url(r'^rocketfuel/', include(rocketfuel.urls)),
    url(r'^rocketfuel/collections/', include(subcollections.urls)),
    url(r'^apps/', include('mkt.versions.urls')),
    url(r'^apps/', include('mkt.ratings.urls')),
    url(r'^apps/features/',
        AppFeaturesList.as_view(),
        name='api-features-feature-list'),
    url('', include(abuse_api_patterns)),
    url('', include(account_api_patterns)),
    url('', include('mkt.installs.urls')),
    url('', include(reviewer_api_patterns)),
Example #10
0
services.register(r"carrier", CarrierViewSet, base_name="carriers")
services.register(r"region", RegionViewSet, base_name="regions")
services.register(r"price-tier", PriceTierViewSet, base_name="price-tier")
services.register(r"price-currency", PriceCurrencyViewSet, base_name="price-currency")

urlpatterns = patterns(
    "",
    url("", include("mkt.fireplace.urls")),
    url("", include("mkt.darjeeling.urls")),
    url(r"^apps/", include(apps.urls)),
    url(r"^apps/app/", include(subapps.urls)),
    url(r"^apps/search/featured/", FeaturedSearchView.as_view(), name="featured-search-api"),
    url(r"^apps/search/suggest/", SuggestionsView.as_view(), name="suggestions-search-api"),
    url(r"^apps/search/rocketbar/", RocketbarView.as_view(), name="rocketbar-search-api"),
    url(r"^apps/search/", SearchView.as_view(), name="search-api"),
    url(r"^services/", include(services.urls)),
    url(r"^services/config/site/", site_config, name="site-config"),
    url(r"^fireplace/report_error/\d*", error_reporter, name="error-reporter"),
    url(r"^rocketfuel/", include(rocketfuel.urls)),
    url(r"^rocketfuel/collections/", include(subcollections.urls)),
    url(r"^apps/", include("mkt.versions.urls")),
    url(r"^apps/", include("mkt.ratings.urls")),
    url(r"^apps/features/", AppFeaturesList.as_view(), name="api-features-feature-list"),
    url("", include(abuse_api_patterns)),
    url("", include(account_api_patterns)),
    url("", include("mkt.installs.urls")),
    url("", include(reviewer_api_patterns)),
    url("", include("mkt.webpay.urls")),
    url("", include(dev_api_patterns)),
    url("", include(payments_api_patterns)),