Ejemplo n.º 1
0
    def test__sites__list__ok(self):
        social_url = factories.FacebookUrlFactory()
        factories.GoogleUrlFactory(site=social_url.site)

        factories.SiteFactory(
            user=social_url.site.user)  # second site for authenticated user
        factories.SiteFactory()  # some random site

        request = self.factory.get(self.path)
        self._authenticate_request(request, user=social_url.site.user)
        response = views.SiteListCreateView.as_view()(request)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data.__len__(), 2)
Ejemplo n.º 2
0
 def setUpClass(cls):
     super(TestNonJavascriptSharing, cls).setUpClass()
     cls.client = Client()
     cls.factory = RequestFactory()
     cls.service_factory = channels.ServiceFactory()
     cls.service_objects = {
         constants.SOCIAL_SERVICE_GMAIL: channels.GmailService,
         constants.SOCIAL_SERVICE_GOOGLE_PLUS: channels.GooglePlusService,
         constants.SOCIAL_SERVICE_FACEBOOK: channels.FacebookService,
         constants.SOCIAL_SERVICE_TWITTER: channels.TwitterService,
         constants.SOCIAL_SERVICE_DIGG: channels.DiggService,
         constants.SOCIAL_SERVICE_DELICIOUS: channels.DeliciousService,
         constants.SOCIAL_SERVICE_STUMBLEUPON: channels.StumbleuponService,
         constants.SOCIAL_SERVICE_LINKEDIN: channels.LinkedinService,
         constants.SOCIAL_SERVICE_PINTEREST: channels.PinterestService,
         constants.SOCIAL_SERVICE_WHATSAPP: channels.WhatsappService,
         constants.SOCIAL_SERVICE_TUMBLR: channels.TumblrService,
         constants.SOCIAL_SERVICE_REDDIT: channels.RedditService,
         constants.SOCIAL_SERVICE_INSTAGRAM: channels.Service
     }
     cls.site = factories.SiteFactory(thank_you_message='test',
                                      address_bar_sharing=True,
                                      copy_paste_sharing=True,
                                      domain='test-site-settings.com',
                                      trim_api_key='123')
     cls.site_id = Signer().sign(cls.site.pk)
Ejemplo n.º 3
0
 def test__site_get_id_by_hash(self):
     site = factories.SiteFactory()
     site_id_int = str(site.pk)
     self.assertEqual(models.Site.get_id_by_hash(site_id_int), site_id_int)
     signer = Signer()
     site_id = signer.sign(site.pk)
     self.assertEqual(models.Site.get_id_by_hash(site_id), site_id_int)
Ejemplo n.º 4
0
    def test__site_get_config_with_social_urls(self):
        site = factories.SiteFactory(domain='test.com',
                                     thank_you_message='test')
        factories.FacebookUrlFactory(url='social1.com/test', site=site)
        factories.GoogleUrlFactory(url='social2.com/test', site=site)

        expected = {
            'hash_id': '13:NJPFNaC41thbepMv_YjCqSefKlg',
            'sharing': {
                'byHash': False,
                'copyPaste': False,
                'hasShortUrls': True
            },
            'thank_you': {
                'services': {
                    'facebook': 'social1.com/test',
                    'googlePlus': 'social2.com/test'
                },
                'message': 'test',
                'advertImageUrl': '',
                'advertTitle': '',
                'advertUrl': '',
            },
            'widget_configurations': [],
            'offset': 0,
            'dmp_execute_code': False,
            'vanity_domain': ''
        }

        self.assertEqual(site.get_config(), expected)
Ejemplo n.º 5
0
    def test__get_report_api(self):
        site = factories.SiteFactory()
        begin_date, end_date = get_begin_end_date_timestamp()
        params = {
            'site': site.pk,
            'begin_date': begin_date,
            'end_date': end_date,
            'events': 'clicks'
        }
        url = '/api/v1/reports?%s' % urllib.urlencode(params)
        request = self.factory.get(url)
        self._authenticate_request(request, user=site.user)
        old_response = archive_views.GetReport.as_view()(request)
        data = json.loads(old_response.content)
        old_data = self.sum_all(data)

        kwargs = dict(site=site.pk,
                      source=constants.SOCIAL_SERVICE_FACEBOOK,
                      url='http://test.com',
                      tool=constants.Tools.SHARING_BUTTONS.value,
                      domain='www.gravity4.com',
                      date=datetime.datetime.utcnow(),
                      country=constants.UNKNOWN_COUNTRY,
                      browser=constants.UNKNOWN_BROWSER,
                      search_term='',
                      search_engine='')
        tasks.update_counters(constants.Events.CLICK.value, **kwargs)
        request = self.factory.get(url)
        self._authenticate_request(request, user=site.user)
        response = archive_views.GetReport.as_view()(request)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        data = json.loads(response.content)
        new_data = self.sum_all(data)
        self.assertNotEqual(old_data, new_data)
Ejemplo n.º 6
0
    def test__site_detail__update(self, cache):
        site = factories.SiteFactory()
        widget_configuration = factories.WidgetConfigurationFactory()

        data_set = [
            dict(domain='new_site_detail.com'),
            dict(social_urls=[{
                'service': 'facebook',
                'url': 'http://fb.test.com'
            }]),
            dict(address_bar_sharing=True,
                 widget_configurations=[widget_configuration.pk]),
        ]

        for data in data_set:
            request = self.factory.patch(reverse('accounts_site_detail',
                                                 args=[site.pk]),
                                         data=data)
            self._authenticate_request(request, user=site.user)

            response = views.SiteRetrieveUpdateView.as_view()(request,
                                                              pk=site.pk)

            self.assertEqual(response.status_code, status.HTTP_200_OK,
                             response.data)
            fresh_site = models.Site.objects.get(pk=site.pk)
            self.assertDictEqual(response.data,
                                 serializers.SiteSerializer(fresh_site).data,
                                 msg=data)

        cache.delete.assert_called_with(dict(site_id=site.pk))
        self.assertEqual(cache.delete.call_count, 3)
Ejemplo n.º 7
0
    def test__widget_detail__update_buttons_plus(self, cache):
        site = factories.SiteFactory()
        widget = factories.WidgetConfigurationFactory(site=site)

        factories.FacebookWidgetButtonFactory(order=0,
                                              configuration=widget,
                                              is_extra_button=False)
        factories.GoogleWidgetButtonFactory(order=1,
                                            configuration=widget,
                                            is_extra_button=False)
        data = {
            'name':
            'New title',
            'type':
            constants.WIDGET_CONFIGURATION_SHARING_BUTTONS,
            'extra_button_animation':
            False,
            'orientation':
            constants.BUTTON_ORIENTATION_VERTICAL,
            'button_size':
            constants.BUTTON_SIZE_SMALL,
            'button_style':
            constants.BUTTON_STYLE_ICON,
            'counter_position':
            constants.COUNTER_POSITION_TOP,
            'is_active':
            True,
            'has_link_share_button':
            False,
            'buttons': [{
                'service': 'googlePlus',
                'is_extra_button': True,
                'is_short_link': True,
                'text': 'Google+',
                'has_counter': True,
                'follow_url': ''
            }, {
                'service': 'facebook',
                'is_extra_button': True,
                'is_short_link': True,
                'text': 'Facebook',
                'has_counter': True,
                'follow_url': ''
            }]
        }
        request = self.factory.patch(
            reverse('accounts_widget_detail', args=[site.pk, widget.pk]), data)
        self._authenticate_request(request, user=widget.site.user)

        response = views.WidgetRetrieveUpdateView.as_view()(
            request, site_pk=site.pk, widget_pk=widget.pk)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        expected = data.copy()
        expected['id'] = widget.pk
        expected['vanity_domain'] = ''
        expected['position'] = ''
        self.assertDictEqual(response.data, expected)
        cache.delete.assert_called_with(dict(site_id=site.pk))
        self.assertEqual(cache.delete.call_count, 1)
Ejemplo n.º 8
0
    def test__get_report_api_incorrect_request(self):
        site = factories.SiteFactory()
        begin_date, end_date = get_begin_end_date_timestamp()
        params = {
            'begin_date': begin_date,
            'end_date': end_date,
            'events': 'clicks'
        }

        # Generate 400 (empty site id)
        url = '/api/v1/reports?%s' % urllib.urlencode(params)
        request = self.factory.get(url)
        self._authenticate_request(request, user=site.user)
        response = archive_views.GetReport.as_view()(request)
        self.assertEqual(response.status_code, 400)

        # Generate 404 (nonexistent site id)
        url = '/api/v1/reports?%s&site=404' % urllib.urlencode(params)
        request = self.factory.get(url)
        self._authenticate_request(request, user=site.user)
        response = archive_views.GetDigest.as_view()(request)
        self.assertEqual(response.status_code, 404)

        # Generate 403 (site's user != user)
        user = factories.UserFactory()
        url = '/api/v1/reports?%s&site=%s' % (urllib.urlencode(params),
                                              site.pk)
        request = self.factory.get(url)
        self._authenticate_request(request, user=user)
        response = archive_views.GetReport.as_view()(request)
        self.assertEqual(response.status_code, 403)
Ejemplo n.º 9
0
 def setUpClass(cls):
     super(TestTasks, cls).setUpClass()
     cls.site = factories.SiteFactory(
         thank_you_message='test',
         address_bar_sharing=True,
         domain='test-tasks.com'
     )
     cls.trim_service = TrimService()
     cls.timestamp = datetime(2000, 1, 15, 4, 7)
Ejemplo n.º 10
0
    def test__site_detail__unauthorized(self):
        site = factories.SiteFactory()
        request = self.factory.get(
            reverse('accounts_site_detail', args=[site.pk]))
        self._authenticate_request(request)

        response = views.SiteRetrieveUpdateView.as_view()(request, pk=site.pk)

        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
        self.assertDictEqual(response.data, {'detail': 'Not found.'})
Ejemplo n.º 11
0
    def test__site_detail__get(self):
        site = factories.SiteFactory()
        request = self.factory.get(
            reverse('accounts_site_detail', args=[site.pk]))
        self._authenticate_request(request, user=site.user)

        response = views.SiteRetrieveUpdateView.as_view()(request, pk=site.pk)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertDictEqual(response.data,
                             serializers.SiteSerializer(site).data)
Ejemplo n.º 12
0
 def test__cache_get_digest_data(self):
     site = factories.SiteFactory()
     begin_date, end_date = get_begin_end_date()
     archive_views.get_digest_data(site,
                                   begin_date,
                                   end_date,
                                   aggregation='day')
     cached, data = archive_views.get_digest_data(site,
                                                  begin_date,
                                                  end_date,
                                                  aggregation='day')
     self.assertEqual(cached, True)
Ejemplo n.º 13
0
    def test__widgets__create__more_than_one_disallowed(self):
        user1 = factories.UserFactory()
        user2 = factories.UserFactory()
        site1 = factories.SiteFactory(user=user1)
        site2 = factories.SiteFactory(user=user1)
        site3 = factories.SiteFactory(user=user2)
        disallow_many_widgets = [
            constants.WIDGET_CONFIGURATION_COPY_PASTE,
            constants.WIDGET_CONFIGURATION_NEWSLETTER,
            constants.WIDGET_CONFIGURATION_MOBILE,
            constants.WIDGET_CONFIGURATION_VERTICAL_FLOAT
        ]
        self.data.update({
            'position': constants.WIDGET_LEFT_POSITION,
            'page_title': 'Page title',
            'page_url': 'http://example.com',
            'media_url': 'http://media.com',
            'min_width': 0,
        })

        for widget_type in disallow_many_widgets:
            self.data['type'] = widget_type
            # First creation
            response, _ = self._create_widget(site=site1)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
            # Second creation fails for the same user and the same site
            self.data['name'] += '1'
            response, _ = self._create_widget(site=site1)
            self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
            self.assertEqual(
                response.data['non_field_errors'],
                ['You can not create more than one widget of this type.'])
            # Second creation doesn't fail for the same user and another site
            self.data['name'] += '2'
            response, _ = self._create_widget(site=site2)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
            # Second creation doesn't fail for another user
            self.data['name'] += '3'
            response, _ = self._create_widget(site=site3)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
Ejemplo n.º 14
0
    def test__newsletter_widget_detail__update_media_url(self, cache):
        site = factories.SiteFactory()
        widget = factories.WidgetConfigurationFactory(
            site=site, type=constants.WIDGET_CONFIGURATION_NEWSLETTER)

        factories.FacebookWidgetButtonFactory(order=0, configuration=widget)
        factories.GoogleWidgetButtonFactory(order=1, configuration=widget)
        data = {
            'buttons': [{
                'service': 'twitter',
                'is_extra_button': True
            }, {
                'service': 'facebook',
                'is_extra_button': True
            }, {
                'service': 'pinterest',
                'is_extra_button': True
            }],
            'media_url':
            'http://test.com'
        }
        request = self.factory.patch(
            reverse('accounts_widget_detail', args=[site.pk, widget.pk]), data)
        self._authenticate_request(request, user=widget.site.user)

        response = views.WidgetRetrieveUpdateView.as_view()(
            request, site_pk=site.pk, widget_pk=widget.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['media_url'], 'http://test.com')
        cache.delete.assert_called_with(dict(site_id=site.pk))
        self.assertEqual(cache.delete.call_count, 1)

        # data without pinterest social service
        data = {
            'buttons': [{
                'service': 'twitter',
                'is_extra_button': True
            }],
            'media_url': 'http://test.com'
        }
        request = self.factory.patch(
            reverse('accounts_widget_detail', args=[site.pk, widget.pk]), data)
        self._authenticate_request(request, user=widget.site.user)

        response = views.WidgetRetrieveUpdateView.as_view()(
            request, site_pk=site.pk, widget_pk=widget.pk)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(response.data['media_url'], 'http://test.com')
        cache.delete.assert_called_with(dict(site_id=site.pk))
        self.assertEqual(cache.delete.call_count, 2)
Ejemplo n.º 15
0
    def test__widgets__create__more_than_one_allowed(self):
        user1 = factories.UserFactory()
        user2 = factories.UserFactory()
        site1 = factories.SiteFactory(user=user1)
        site2 = factories.SiteFactory(user=user1)
        site3 = factories.SiteFactory(user=user2)
        allow_many_widgets = [
            constants.WIDGET_CONFIGURATION_SHARING_BUTTONS,
            constants.WIDGET_CONFIGURATION_ORIGIN_BUTTONS,
            constants.WIDGET_CONFIGURATION_FOLLOW
        ]
        self.data.update({
            'position': constants.WIDGET_LEFT_POSITION,
            'page_title': 'Page title',
            'page_url': 'http://example.com',
            'media_url': 'http://media.com',
            'min_width': 0,
        })

        for widget_type in allow_many_widgets:
            self.data['type'] = widget_type
            # First creation
            response, _ = self._create_widget(site=site1)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
            # Second creation for the same user and the same site
            self.data['name'] += '1'
            response, _ = self._create_widget(site=site1)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
            # Second creation for the same user and another site
            self.data['name'] += '2'
            response, _ = self._create_widget(site=site2)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
            # Second creation for another user
            self.data['name'] += '3'
            response, _ = self._create_widget(site=site3)
            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
Ejemplo n.º 16
0
    def test__widget_detail__unauthorized(self):
        site = factories.SiteFactory()
        widget = factories.WidgetConfigurationFactory(site=site)

        request = self.factory.get(
            reverse('accounts_widget_detail', args=[site.pk, widget.pk]))
        # self._authenticate_request(request)

        response = views.WidgetRetrieveUpdateView.as_view()(
            request, site_pk=site.pk, widget_pk=widget.pk)

        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
        self.assertDictEqual(
            response.data,
            {'detail': 'Authentication credentials were not provided.'})
Ejemplo n.º 17
0
    def test__widget_detail__update_buttons_with_duplicates(self):
        site = factories.SiteFactory()
        widget = factories.WidgetConfigurationFactory(site=site)

        data = {'buttons': [{'service': 'facebook'}, {'service': 'facebook'}]}
        request = self.factory.patch(
            reverse('accounts_widget_detail', args=[site.pk, widget.pk]), data)
        self._authenticate_request(request, user=widget.site.user)

        response = views.WidgetRetrieveUpdateView.as_view()(
            request, site_pk=site.pk, widget_pk=widget.pk)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.data['buttons'],
            ['Service must be unique for the widget configuration.'])
Ejemplo n.º 18
0
 def setUpClass(cls):
     super(TestTracker, cls).setUpClass()
     cls.client = Client()
     cls.factory = RequestFactory()
     cls.site = factories.SiteFactory(thank_you_message='test',
                                      thank_you_advert_image_url='',
                                      thank_you_advert_url='',
                                      thank_you_advert_title='',
                                      address_bar_sharing=True,
                                      domain='test-tasks.com')
     cls.click_url = reverse('tracker_click')
     cls.track_event = reverse('track_event')
     cls.site_settings_url = reverse('site_settings')
     cls.site_id = Signer().sign(cls.site.pk)
     cls.counters_url = reverse('counters', kwargs={'site_id': cls.site_id})
     cls.counters_url_int = reverse('counters',
                                    kwargs={'site_id': cls.site.pk})
     cls.create_shortlink_url = reverse('tracker_create_shortlink')
Ejemplo n.º 19
0
 def test__all_widgets(self):
     all_widgets = (
         (constants.WIDGET_CONFIGURATION_SHARING_BUTTONS,
          models.SharingButtonsWidget),
         (constants.WIDGET_CONFIGURATION_COPY_PASTE,
          models.CopyPasteWidget),
         (constants.WIDGET_CONFIGURATION_NEWSLETTER,
          models.NewsletterWidget),
         (constants.WIDGET_CONFIGURATION_MOBILE, models.MobileWidget),
         (constants.WIDGET_CONFIGURATION_FOLLOW, models.FollowWidget),
     )
     for widget_type, class_instance in all_widgets:
         site = factories.SiteFactory()
         class_instance.objects.all().delete()
         for i in range(5):
             factories.WidgetConfigurationFactory(site=site,
                                                  type=widget_type)
         # Check it from the object's manager
         self.assertEqual(class_instance.objects.all().count(), 5)
Ejemplo n.º 20
0
    def test__site_detail__update_social_urls_with_duplicates(self):
        site = factories.SiteFactory()
        data = {
            'social_urls': [{
                'service': 'facebook',
                'url': 'facebook.com/testUrl'
            }, {
                'service': 'facebook',
                'url': 'twitter.com/duplicateServiceUrl'
            }]
        }
        request = self.factory.patch(
            reverse('accounts_site_detail', args=[site.pk]), data)
        self._authenticate_request(request, user=site.user)

        response = views.SiteRetrieveUpdateView.as_view()(request, pk=site.pk)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.data['social_urls'],
                         ['Service must be unique for the site.'])
Ejemplo n.º 21
0
 def test__get_digest_api(self):
     site = factories.SiteFactory()
     begin_date, end_date = get_begin_end_date_timestamp()
     params = {
         'site': site.pk,
         'begin_date': begin_date,
         'end_date': end_date
     }
     url = '/api/v1/digest?%s' % urllib.urlencode(params)
     request = self.factory.get(url)
     self._authenticate_request(request, user=site.user)
     response = archive_views.GetDigest.as_view()(request)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     data = get_data(site.pk)
     for item in data:
         tasks.update_counters(item['event'], value=1, **item['data'])
     request = self.factory.get(url)
     self._authenticate_request(request, user=site.user)
     response = archive_views.GetDigest.as_view()(request)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
Ejemplo n.º 22
0
    def test__widget_detail__get(self):
        serializers_map = {
            'sharing-buttons': serializers.SharingButtonsWidgetSerializer,
            'copy-paste': serializers.CopyPasteWidgetSerializer,
            'newsletter': serializers.NewsletterWidgetSerializer
        }

        for widget_type, serializer in serializers_map.items():
            site = factories.SiteFactory()
            widget = factories.WidgetConfigurationFactory(site=site,
                                                          type=widget_type)

            request = self.factory.get(
                reverse('accounts_widget_detail', args=[site.pk, widget.pk]))
            self._authenticate_request(request, user=widget.site.user)

            response = views.WidgetRetrieveUpdateView.as_view()(
                request, site_pk=site.pk, widget_pk=widget.pk)

            self.assertEqual(response.status_code, status.HTTP_200_OK)
            self.assertDictEqual(response.data, serializer(widget).data)
Ejemplo n.º 23
0
    def test__site_settings_cached(self, create_uuid):
        facebook_url = 'http://facebook.com/test'
        thank_you_message = 'test'
        uuid = 'yPEZFA4eEeWv9ggAJ/e7NQ'
        site = factories.SiteFactory(thank_you_message=thank_you_message,
                                     address_bar_sharing=True,
                                     copy_paste_sharing=True,
                                     domain='test-site-settings-2.com')
        factories.FacebookUrlFactory(url=facebook_url, site=site)
        create_uuid.return_value = uuid
        site_ids = [str(site.pk), site.hash_id]

        for site_id in site_ids:
            request = self.factory.get(self.site_settings_url + '?idsite=' +
                                       site_id)
            expected = {
                'sharing': {
                    'byHash': True,
                    'copyPaste': True,
                    'hasShortUrls': True
                },
                'thank_you': {
                    'services': {
                        constants.SOCIAL_SERVICE_FACEBOOK: facebook_url
                    },
                    'message': thank_you_message,
                    'advertImageUrl': u'',
                    'advertTitle': u'',
                    'advertUrl': u'',
                },
                'hash_id': site.hash_id,
                'widget_configurations': [],
                'uuid': uuid,
                'dmp_execute_code': False,
                'vanity_domain': ''
            }
            response = views.site_settings(request)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(expected, json.loads(response.content))
Ejemplo n.º 24
0
    def test__site_get_config(self):
        site = factories.SiteFactory(domain='test.com',
                                     thank_you_message='test')
        expected = {
            'hash_id': '13:NJPFNaC41thbepMv_YjCqSefKlg',
            'sharing': {
                'byHash': False,
                'copyPaste': False,
                'hasShortUrls': True
            },
            'thank_you': {
                'services': {},
                'message': 'test',
                'advertImageUrl': '',
                'advertTitle': '',
                'advertUrl': '',
            },
            'widget_configurations': [],
            'offset': 0,
            'dmp_execute_code': False,
            'vanity_domain': ''
        }

        self.assertDictEqual(site.get_config(), expected)
Ejemplo n.º 25
0
    def test__widget_detail__update(self, cache):
        site = factories.SiteFactory()
        widget = factories.WidgetConfigurationFactory(site=site)

        data_set = [
            dict(name='new_widget_configuration_title'),
            dict(buttons=[{
                'service': 'facebook',
                'is_extra_button': True
            }, {
                'service': 'twitter',
                'is_extra_button': False
            }]),
            dict(orientation=constants.BUTTON_ORIENTATION_VERTICAL),
            dict(is_active=False),
        ]

        for data in data_set:
            request = self.factory.patch(reverse('accounts_widget_detail',
                                                 args=[site.pk, widget.pk]),
                                         data=data)
            self._authenticate_request(request, user=widget.site.user)

            response = views.WidgetRetrieveUpdateView.as_view()(
                request, site_pk=site.pk, widget_pk=widget.pk)

            self.assertEqual(response.status_code, status.HTTP_200_OK,
                             response.data)
            fresh_widget_configuration = models.WidgetConfiguration.objects.get(
                pk=widget.pk)
            self.assertDictEqual(response.data,
                                 serializers.SharingButtonsWidgetSerializer(
                                     fresh_widget_configuration).data,
                                 msg=data)
        cache.delete.assert_has_calls([call(dict(site_id=site.pk))])
        self.assertEqual(cache.delete.call_count, 4)
Ejemplo n.º 26
0
    def test__site_detail__update_when_model_has_social_urls(self, cache):
        site = factories.SiteFactory()
        data = {
            'domain':
            'test.pt',
            'thank_you_message':
            'test thank you message',
            'thank_you_advert_image_url':
            'http://mydomain.com/test.png',
            'thank_you_advert_url':
            'http://mydomain.com',
            'thank_you_advert_title':
            'some title',
            'social_urls': [{
                'service': 'facebook',
                'url': 'facebook.com/newTestUrl'
            }, {
                'service': 'twitter',
                'url': 'twitter.com/newTestUrl'
            }],
            'address_bar_sharing':
            True,
            'copy_paste_sharing':
            True,
            'has_short_urls':
            True,
            'trim_api_key':
            '7ec3c5647b5c732db85d11deca8f6d95',
            'hash_id':
            '1234',
            'analytics_account':
            'ac',
            'analytics_property':
            'prop',
            'analytics_profile':
            'prof',
            'vanity_domain':
            ''
        }
        request = self.factory.patch(
            reverse('accounts_site_detail', args=[site.pk]), data)
        self._authenticate_request(request, user=site.user)

        response = views.SiteRetrieveUpdateView.as_view()(request, pk=site.pk)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        expected = data.copy()
        expected['id'] = site.pk
        facebook_social_url_id = models.SocialUrl.objects.get(
            site__pk=site.pk, service='facebook').pk
        twitter_social_url_id = models.SocialUrl.objects.get(
            site__pk=site.pk, service='twitter').pk
        expected['social_urls'][0]['id'] = facebook_social_url_id
        expected['social_urls'][1]['id'] = twitter_social_url_id
        self.assertEqual(response.data, expected)
        cache.delete.assert_called_with(dict(site_id=site.pk))
        self.assertEqual(cache.delete.call_count, 1)

        # Delete twitter service from social_url
        data['social_urls'] = [{
            'service': 'facebook',
            'url': 'facebook.com/newTestUrl'
        }]
        request = self.factory.put(
            reverse('accounts_site_detail', args=[site.pk]), data)
        self._authenticate_request(request, user=site.user)

        response = views.SiteRetrieveUpdateView.as_view()(request, pk=site.pk)

        self.assertEqual(response.status_code, status.HTTP_200_OK)
        expected = data.copy()
        expected['id'] = site.pk
        facebook_social_url_id = models.SocialUrl.objects.get(
            site__pk=site.pk, service='facebook').pk
        expected['social_urls'][0]['id'] = facebook_social_url_id
        self.assertEqual(response.data, expected)
Ejemplo n.º 27
0
 def setUpClass(cls):
     super(WidgetsViewsTestCase, cls).setUpClass()
     cls.site = factories.SiteFactory()
     cls.path = reverse('accounts_widgets', args=[cls.site.pk])
Ejemplo n.º 28
0
 def setUpClass(cls):
     super(ReportsTestCase, cls).setUpClass()
     cls.site = factories.SiteFactory()
     begin_date, end_date = date_range[0], date_range[-1]
     cls.report = Report(cls.site.pk, begin_date, end_date)