public void Register_WhenProvidedWithValidAuthenticationAndDetails_CreatesANewPage(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.OtherCelebration,
                PageShortName = pageShortName,
                PageTitle = "api test",
                EventName = "The Other Occasion of ApTest and APITest",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };

            var registrationResponse = pageClient.Create(pageCreationRequest);

            Assert.That(registrationResponse.Next.Uri, Is.StringContaining(pageShortName));
        }
		public ActionResult Create(string pageShortName, int eventId, string email, string password)
		{
			var newPage = new RegisterPageRequest
			              	{
			              		PageShortName = pageShortName,
			              		PageTitle = "Our little demo page",
			              		TargetAmount = 100,
			              		EventId = eventId,
			              		CharityId = 2050
			              	};

			if(!JustGivingClient.Account.IsEmailRegistered(email))
			{
				ModelState.AddModelError("email", "User is not registered on JustGiving.");
				return View();
			}

			SetClientContext(email, password);
			var registrationResponse = JustGivingClient.Page.Create(newPage);

			return View(registrationResponse);
		}
        public void Register_SuppliedValidAuthenticationAndValidRegisterPageRequestWithNewRememberedPersonDetails_CanRetrievePageWithRememberedPersonData(WireDataFormat format)
        {
            var guid = Guid.NewGuid();
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + guid;

            var firstName = "FirstName-api-test";
            var lastName = string.Format("Last-{0}", guid);

            string inMemNameAttribution = String.Format("{0} {1}{2}", firstName, lastName, guid).Trim();

            var rememberedPersonReference = new RememberedPersonReference
            {
                Relationship = "Other",
                RememberedPerson = new RememberedPerson
                                       {
                                           FirstName = firstName,
                                           LastName = lastName,
                                           Gender = Gender.Male.ToString(),
                                           Town = String.Format("town-{0}", guid),
                                           DateOfBirth = DateTime.Now.AddYears(-50),
                                           DateOfDeath = DateTime.Now.AddDays(-1),
                                       }
            };

            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.InMemory,
                Attribution = inMemNameAttribution,
                PageShortName = pageShortName,
                PageTitle = "api test InMem Name",
                EventName = "The InMem ApiTest",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5),
                RememberedPersonReference = rememberedPersonReference,
            };

            pageClient.Create(pageCreationRequest);
            FundraisingPage page = pageClient.Retrieve(pageShortName);

            Assert.NotNull(page.RememberedPersonSummary.Name);
            Assert.That(page.RememberedPersonSummary.Next.Uri, Is.StringContaining(String.Format("remember/{0}", page.RememberedPersonSummary.Id)));
        }
        public void Can_Create_Page_For_Event_Using_Event_Reference(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = null,
                PageShortName = pageShortName,
                PageTitle = "When Provided With Valid Authentication Details And An Empty Activity Type - Creates New Page",
                EventName = "The Other Occasion of ApTest and APITest",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };

            pageClient.Create("341_RFL2010", pageCreationRequest);
        }
        public string Create_Page_With_Custom_Theme(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.OtherCelebration,
                PageShortName = pageShortName,
                PageTitle = "Page with custom theme",
                EventName = "Test",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5),
                Theme = new PageTheme { BackgroundColour = "#FF0000", ButtonColour = "#FFFF00", ButtonTextColour = "#00FF00", TitleColour = "#0000FF" }
            };

            pageClient.Create(pageCreationRequest);

            return pageShortName;
        }
        public void UploadImage_WhenProvidedCredentialsAndValidPageAndImage_UploadsImage(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);

            // Create Page
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.OtherCelebration,
                PageShortName = "api-test-" + Guid.NewGuid(),
                PageTitle = "Page Created For Update Story Integration Test",
                EventName = "Story Update Testing",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };
            pageClient.Create(pageCreationRequest);

            var imageName = Guid.NewGuid().ToString();
            pageClient.UploadImage(pageCreationRequest.PageShortName, imageName, File.ReadAllBytes("jpg.jpg"), "image/jpeg");

            // Assert
            var pageData = pageClient.Retrieve(pageCreationRequest.PageShortName);
            Assert.That(pageData.Media.Images[0].Caption, Is.StringContaining(imageName));
        }
        public void Cannot_Create_Page_For_Event_Using_Event_Reference_And_Id(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = null,
                PageShortName = pageShortName,
                PageTitle = "When Provided With Valid Authentication Details And An Empty Activity Type - Creates New Page",
                EventName = "The Other Occasion of ApTest and APITest",
                CharityId = 2050,
                EventId = 1,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };

            var ex = Assert.Throws<ErrorResponseException>(() => pageClient.Create("foo", pageCreationRequest));
            Assert.That(ex.Response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
        }
        public string CreateLocationFormat(RegisterPageRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request", "Request cannot be null.");
            }

            return ResourceBase + "/pages";
        }
        public void UpdatePageStory_WhenProvidedCredentialsAndValidPage_PostsUpdate(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);

            // Create Page
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.OtherCelebration,
                PageShortName = pageShortName,
                PageTitle = "Page Created For Update Story Integration Test",
                EventName = "Story Update Testing",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };

            pageClient.Create(pageCreationRequest);

            // Act
            var update = DateTime.Now + ": Unit Test Update";
            pageClient.UpdateStory(pageCreationRequest.PageShortName, update);

            // Assert
            var pageData = pageClient.Retrieve(pageShortName);
            Assert.That(pageData.Story, Is.StringContaining(update));
        }
        public void Register_SuppliedValidAuthenticationAndValidRegisterPageRequestWithInMemName_CanRetrieveNameFromAttribution(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            const string inMemName = "Matheu";
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.InMemory,
                Attribution = inMemName,
                PageShortName = pageShortName,
                PageTitle = "api test InMem Name",
                EventName = "The InMem ApiTest",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };

            pageClient.Create(pageCreationRequest);
            FundraisingPage page = pageClient.Retrieve(pageShortName);
            Assert.That(page.Attribution, Is.EqualTo(inMemName));
        }
        public void Register_WhenProvidedWithValidAuthenticationAndDetailsAndAnEmptyActivityType_TheResponseContainsThePageId(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = null,
                PageShortName = pageShortName,
                PageTitle = "api test",
                EventName = "The Other Occasion of ApTest and APITest",
                CharityId = 2050,
                EventId = TestConfigurationsHelper.GetProperty<ITestConfigurations, int>(x => x.ValidEventId),
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };

            var registrationResponse = pageClient.Create(pageCreationRequest);

            Assert.That(registrationResponse.PageId != 0);
        }
        public void CreateAsync(string eventRef, RegisterPageRequest request, Action<PageRegistrationByEventRefConfirmation> callback)
        {
			var locationFormat = "{apiKey}/v{apiVersion}/event/ref/" + eventRef + "/pages";
            HttpChannel.PerformRequestAsync("POST", locationFormat, request, callback);
        }
        public void Register_SuppliedValidAuthenticationAndValidRegisterPageRequestWithCompanyAppealId_CanRetrieveCompanyId(WireDataFormat format)
        {
            //arrange
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            const int companyAppealId = 200002;
            var pageCreationRequest = new RegisterPageRequest
            {
                CompanyAppealId = companyAppealId,
                ActivityType = null,
                PageShortName = pageShortName,
                PageTitle = "api test",
                EventName = "The Other Occasion of ApTest and APITest",
                CharityId = 2050,
                EventId = TestConfigurationsHelper.GetProperty<ITestConfigurations, int>(x => x.ValidEventId),
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };
            pageClient.Create(pageCreationRequest);

            //act
            var result = pageClient.Retrieve(pageShortName);

            //assert
            Assert.That(result.CompanyAppealId, Is.EqualTo(companyAppealId));
        }
 public void CreateAsync(RegisterPageRequest request, Action<PageRegistrationConfirmation> callback)
 {
     var locationFormat = CreateLocationFormat(request);
     HttpChannel.PerformRequestAsync("PUT", locationFormat, request, callback);
 }
        public PageRegistrationByEventRefConfirmation Create(string eventRef, RegisterPageRequest request)
        {
			string locationFormat = "{apiKey}/v{apiVersion}/event/ref/" + eventRef + "/pages";
            return HttpChannel.PerformRequest<RegisterPageRequest, PageRegistrationByEventRefConfirmation>("POST", locationFormat, request);
        }
 public PageRegistrationConfirmation Create(RegisterPageRequest request)
 {
     var locationFormat = CreateLocationFormat(request);
     return HttpChannel.PerformRequest<RegisterPageRequest, PageRegistrationConfirmation>("PUT", locationFormat, request);
 }
        public void RegisterWhenProvidedWithADomainThatDoesNotExist_ThrowsException(WireDataFormat format)
        {
            const string domainThatDoesNotExistOnJustGiving = "Incorrect.com";

            var client = TestContext.CreateClientValidCredentials(format);
            client.SetWhiteLabelDomain(domainThatDoesNotExistOnJustGiving);

            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = null,
                PageShortName = pageShortName,
                PageTitle = "api test",
                EventName = "The Other Occasion of ApTest and APITest",
                CharityId = 2050,
                EventId = 1,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };

            var exception = Assert.Throws<ErrorResponseException>(() => pageClient.Create(pageCreationRequest));

            Assert.That(exception.Response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
        }
		public void AddFundraisingPageVideo_WhenCredentialsValidAndRequestValid_ReturnsSuccessful(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
			var pageClient = new PageApi(client.HttpChannel);

            // Create Page
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.OtherCelebration,
                PageShortName = pageShortName,
                PageTitle = "Page Created For Update Story Integration Test",
                EventName = "Story Update Testing",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };
            pageClient.Create(pageCreationRequest);

            var addVideoRequest = new AddFundraisingPageVideoRequest { Url = "http://www.youtube.com/watch?v=MSxjbF18BBM", Caption = "neckbrace", PageShortName = pageCreationRequest.PageShortName };
            pageClient.AddVideo(addVideoRequest);
        }
        public void Register_WithWhatAndWhy_CreatesCorrectly(WireDataFormat format)
        {
            var guid = Guid.NewGuid();
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);
            var pageShortName = "api-test-" + guid;

            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.OtherCelebration,
                PageShortName = pageShortName,
                PageTitle = "api test Name",
                EventName = "ApiTest",
                PageSummaryWhat = "saving the universe",
                PageSummaryWhy = "because I'm Batman",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5),
            };

            pageClient.Create(pageCreationRequest);
            var page = pageClient.Retrieve(pageShortName);

            Assert.That(page.PageSummaryWhat, Is.EqualTo("saving the universe"));
            Assert.That(page.PageSummaryWhy, Is.EqualTo("because I'm Batman"));
        }
        public void Register_WhenProvidedWithANonDefaultDomain_CreatesANewPageOnThatDomain(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidRflCredentials(format);
            var domain = TestConfigurationsHelper.GetProperty<ITestConfigurations, string>(x => x.RflDomain);
            client.SetWhiteLabelDomain(domain);

			var pageClient = new PageApi(client.HttpChannel);
            
            var pageShortName = "api-test-" + Guid.NewGuid();
            
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = null,
                Attribution =  null,
                CharityId = 2050,
                PageShortName = pageShortName,
                PageTitle = "Page created on domain " + domain + " by an integration test",
                EventDate = null,
                EventName = null,
                EventId = TestConfigurationsHelper.GetProperty<ITestConfigurations, int>(x => x.RflEventReference), //Was 1 for local
                TargetAmount = null
            };

            var registrationResponse = pageClient.Create(pageCreationRequest);

            Assert.That(registrationResponse.Next.Uri, Is.StringContaining(domain));
        }
        public void RetrievePage_WhenProvidedWithAKnownPage_ReturnsPublicPageView(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
            var pageClient = new PageApi(client.HttpChannel);

            // Create Page
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
                                        {
                                            ActivityType = ActivityType.OtherCelebration,
                                            PageShortName = pageShortName,
                                            PageTitle = "Page Created For Update Story Integration Test",
                                            EventName = "Story Update Testing",
                                            CharityId = 2050,
                                            TargetAmount = 20M,
                                            EventDate = DateTime.Now.AddDays(5),
                                            CustomCodes =
                                                new PageCustomCodes
                                                    {
                                                        CustomCode1 = "code1",
                                                        CustomCode2 = "code2",
                                                        CustomCode3 = "code3",
                                                        CustomCode4 = "code4",
                                                        CustomCode5 = "code5",
                                                        CustomCode6 = "code6"
                                                    }
                                        };
            pageClient.Create(pageCreationRequest);

            // Act
            var pageData = pageClient.Retrieve(pageShortName);

            Assert.NotNull(pageData);
            Assert.That(pageData.PageCreatorName, Is.Not.Empty);
            Assert.AreEqual(pageData.PageShortName, pageCreationRequest.PageShortName);
            Assert.AreEqual(pageData.PageTitle, pageCreationRequest.PageTitle);
            Assert.AreEqual(pageData.EventName, pageCreationRequest.EventName);
            Assert.AreEqual(pageData.TargetAmount, pageCreationRequest.TargetAmount);
            Assert.IsNotNullOrEmpty(pageData.SmsCode);
            Assert.That(pageData.TotalRaisedSms, Is.Not.Empty);
        }
		public void AddFundraisingPageVideo_WhenCredentialsValidAndRequestNotValid_ThrowsException(WireDataFormat format)
        {
            var client = TestContext.CreateClientValidCredentials(format);
			var pageClient = new PageApi(client.HttpChannel);

            // Create Page
            var pageShortName = "api-test-" + Guid.NewGuid();
            var pageCreationRequest = new RegisterPageRequest
            {
                ActivityType = ActivityType.OtherCelebration,
                PageShortName = pageShortName,
                PageTitle = "Page Created For Update Story Integration Test",
                EventName = "Story Update Testing",
                CharityId = 2050,
                TargetAmount = 20M,
                EventDate = DateTime.Now.AddDays(5)
            };
            pageClient.Create(pageCreationRequest);

            var addVideoRequest = new AddFundraisingPageVideoRequest { Url = "", Caption = "", PageShortName = pageCreationRequest.PageShortName };
            var response = Assert.Throws<ErrorResponseException>(() => pageClient.AddVideo(addVideoRequest));
            Assert.That(response.Response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
        }