Ejemplo n.º 1
0
    def test_go_pro_from_wp(self):

        #
        # pre-requisites for fully signed up client
        #
        package = create_push_package(os.path.join(settings.MEDIA_ROOT,
                                                   'test'))
        # register
        resp = register_user_from_wp()
        profile = ClientProfile.objects.all()[0]
        # upload icon
        profile_image = ProfileImage(profile=profile)
        image_path = os.path.join(settings.MEDIA_ROOT, 'test', 'image.png')
        profile_image.image = SimpleUploadedFile(name='test_image.png',
                                                 content=open(
                                                     image_path, 'rb').read(),
                                                 content_type='image/png')
        profile_image.save()
        # select plan
        resp = c.get(reverse('register_thank_you', args=[profile.id]))
        profile = ClientProfile.objects.all()[0]
        profile.status = 'active'
        profile.save()
        plan = Plan.objects.all()[0]
        package = PushPackage.objects.all()[0]

        # assertions for fully signed up client
        self.assertEqual(profile.status, 'active')
        self.assertEqual(ClientProfile.objects.count(), 1)
        self.assertEqual(Plan.objects.count(), 1)
        self.assertEqual(plan.type, PlanVariant.TRIAL)
        self.assertEqual(PushPackage.objects.count(), 1)
        self.assertTrue(package.used)

        # convert plan to Pro.
        # ! This workflow is not 100% in accordance to the website, because
        # the client would select directly the Pro plan, without having a Trial plan first
        plan.type = PlanVariant.PRO
        plan.save()

        # sign in from WordPress, from old version of plugin
        resp = c.post(reverse('api_sign_in'), {
            'api_token': '*****@*****.**',
            'api_secret': 'holymomma',
        })

        # assertions for successfully signing in
        self.assertContains(resp, "signed_in")
        self.assertContains(resp, package.identifier)
        self.assertContains(resp, profile.user.email)
        self.assertContains(resp, "log")

        # assert that website cluster exists
        self.assertEqual(WebsiteCluster.objects.count(), 1)
        cluster = WebsiteCluster.objects.all()[0]
        self.assertEqual(cluster.website_set.count(), 1)

        # sign in from WordPress, from new version of plugin from the website registered with
        resp = c.post(
            reverse('api_sign_in'), {
                'api_token': '*****@*****.**',
                'api_secret': 'holymomma',
                'website_url': 'http://testwebsite.com',
            })

        # assertions for existing website in cluster
        self.assertNotContains(resp, "log")
        self.assertContains(resp, profile.account_key)
        self.assertContains(resp, package.identifier)

        # sign in from WordPress, from new version of plugin from a new website
        resp = c.post(
            reverse('api_sign_in'), {
                'api_token': '*****@*****.**',
                'api_secret': 'holymomma',
                'website_url': 'http://testwebsite2.com',
            })
        self.assertContains(resp, "log")
        self.assertContains(resp, profile.account_key)

        # create a new website in the cluster (done from getpushmonkey.com Dashboard)
        website = Website(
            cluster=cluster,
            return_url="http://testwebsite2.com/wp-admin/index.php",
            website_name="Test Website 2",
            website_url="http://testwebsite2.com")
        package2 = create_push_package(
            os.path.join(settings.MEDIA_ROOT, 'test2'))
        website.account_key = package2.identifier
        website.save()

        self.assertEqual(cluster.website_set.count(), 2)

        # sign in AGAIN from WordPress, from new version of plugin from a new website
        resp = c.post(
            reverse('api_sign_in'), {
                'api_token': '*****@*****.**',
                'api_secret': 'holymomma',
                'website_url': 'http://testwebsite2.com',
            })
        self.assertNotContains(resp, "log")
        self.assertContains(resp, website.account_key)
        self.assertNotContains(resp, profile.account_key)