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)