public async Task UpdateWithGranularLocationData() { OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{AdvertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{AdvertisementId}/view"; var allFieldsWithGranularLocationInitializer = new AllFieldsInitializer(LocationType.UseGranularLocation); this.Fixture.AdPostingApiService .Given("There is a standout advertisement with maximum data") .UponReceiving("a PUT advertisement request to update granular location") .With(new ProviderServiceRequest { Method = HttpVerb.Put, Path = link, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(allFieldsWithGranularLocationInitializer) .Build() }) .WillRespondWith( new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(allFieldsWithGranularLocationInitializer) .WithId(AdvertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithGranularLocationState(null) .Build() }); Advertisement requestModel = new AdvertisementModelBuilder(allFieldsWithGranularLocationInitializer) .Build(); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.UpdateAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link), requestModel); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(allFieldsWithGranularLocationInitializer) .WithId(new Guid(AdvertisementId)) .WithLinks(AdvertisementId) .WithGranularLocationState(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task GetExistingAdvertisementWithWarnings() { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; this.Fixture.AdPostingApiService .Given("There is a standout advertisement with maximum data") .UponReceiving("a GET advertisement request for an advertisement with warnings") .With(new ProviderServiceRequest { Method = HttpVerb.Get, Path = link, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } } }) .WillRespondWith(new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Processing-Status", "Completed" }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(AllFieldsInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithWarnings(new { field = "standout.bullets", code = "missing" }) .Build() }); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link)); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.AllFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithProcessingStatus(ProcessingStatus.Completed) .WithWarnings(new AdvertisementError { Field = "standout.bullets", Code = "missing" }) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
private void AssertRetrievedAdvertisementMatchesExpected(AllFieldsInitializer builderInitializer, string advertisementId, AdvertisementResource result) { AdvertisementResource expectedResult = new AdvertisementResourceBuilder(builderInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithProcessingStatus(ProcessingStatus.Completed) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
private void AssertReturnedAdvertisementMatchesExpectedExpiredAdvertisement(string advertisementId, DateTime expiryDate, AdvertisementResource result) { AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.AllFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithState(AdvertisementState.Expired) .WithExpiryDate(expiryDate) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task ExpireAdvertisementWithPostVerb() { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); string link = $"{AdvertisementLink}/{advertisementId}"; string viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; DateTime expiryDate = new DateTime(2015, 10, 7, 21, 19, 00, DateTimeKind.Utc); this.Fixture.MockProviderService .Given("There is a standout advertisement with maximum data") .UponReceiving("a POST advertisement request to expire an advertisement") .With( new ProviderServiceRequest { Method = HttpVerb.Post, Path = link, Headers = new Dictionary <string, object> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementPatchVersion1 }, { "Accept", this._acceptHeader }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = this._expireRequest } ) .WillRespondWith( new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, object> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(this.AllFieldsInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Expired.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithExpiryDate(expiryDate) .WithAgentId(null) .WithAdditionalProperties(AdditionalPropertyType.ResidentsOnly.ToString(), AdditionalPropertyType.Graduate.ToString()) .Build() }); AdvertisementResource result; var requestUri = new Uri(this.Fixture.AdPostingApiServiceBaseUri, link); using (var client = new HttpClient()) { using (HttpRequestMessage request = this.CreatePatchRequest(requestUri, this._expireRequest, oAuth2Token.AccessToken, "POST")) { using (HttpResponseMessage response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); result = JsonConvert.DeserializeObject <AdvertisementResource>( await response.Content.ReadAsStringAsync(), new ResourceConverter(null, requestUri, response.Headers)); } } } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.AllFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithState(AdvertisementState.Expired) .WithExpiryDate(expiryDate) .WithAgentId(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task PostAdWithGranularLocation() { const string advertisementId = "75b2b1fc-9050-4f45-a632-ec6b7ac2bb4a"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var location = $"http://localhost{link}"; this.Fixture.RegisterIndexPageInteractions(oAuth2Token); var allFieldsWithGranularLocationInitializer = new AllFieldsInitializer(LocationType.UseGranularLocation); this.Fixture.AdPostingApiService .UponReceiving("a POST advertisement request to create a job ad with granular location") .With( new ProviderServiceRequest { Method = HttpVerb.Post, Path = AdvertisementLink, Headers = new Dictionary<string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build() } ) .WillRespondWith( new ProviderServiceResponse { Status = 202, Headers = new Dictionary<string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Location", location }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(allFieldsWithGranularLocationInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithGranularLocationState(null) .Build() }); var requestModel = new AdvertisementModelBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build(); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.CreateAdvertisementAsync(requestModel); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(allFieldsWithGranularLocationInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithGranularLocationState(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task ExpireAdvertisementWithPostVerb() { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); string link = $"{AdvertisementLink}/{advertisementId}"; string viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; DateTime expiryDate = new DateTime(2015, 10, 7, 21, 19, 00, DateTimeKind.Utc); this.Fixture.AdPostingApiService .Given("There is a pending standout advertisement with maximum data") .UponReceiving("a POST advertisement request to expire an advertisement") .With( new ProviderServiceRequest { Method = HttpVerb.Post, Path = link, Headers = new Dictionary<string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementPatchVersion1 }, { "Accept", this._acceptHeader }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = this._expireRequest } ) .WillRespondWith( new ProviderServiceResponse { Status = 202, Headers = new Dictionary<string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(this.AllFieldsInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Expired.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithExpiryDate(expiryDate) .WithAgentId(null) .WithAdditionalProperties(AdditionalPropertyType.ResidentsOnly.ToString(), AdditionalPropertyType.Graduate.ToString()) .Build() }); AdvertisementResource result; var requestUri = new Uri(this.Fixture.AdPostingApiServiceBaseUri, link); using (var client = new HttpClient()) { using (HttpRequestMessage request = this.CreatePatchRequest(requestUri, this._expireRequest, oAuth2Token.AccessToken, "POST")) { using (HttpResponseMessage response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); result = JsonConvert.DeserializeObject<AdvertisementResource>( await response.Content.ReadAsStringAsync(), new ResourceConverter(null, requestUri, response.Headers)); } } } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.AllFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithState(AdvertisementState.Expired) .WithExpiryDate(expiryDate) .WithAgentId(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
private void AssertReturnedAdvertisementMatchesExpectedExpiredAdvertisement(string advertisementId, DateTime expiryDate, AdvertisementResource result) { AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.AllFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithState(AdvertisementState.Expired) .WithExpiryDate(expiryDate) .WithAgentId(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task PostAdWithGranularLocation() { const string advertisementId = "75b2b1fc-9050-4f45-a632-ec6b7ac2bb4a"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var location = $"http://localhost{link}"; this.Fixture.RegisterIndexPageInteractions(oAuth2Token); var allFieldsWithGranularLocationInitializer = new AllFieldsInitializer(LocationType.UseGranularLocation); this.Fixture.AdPostingApiService .UponReceiving("a POST advertisement request to create a job ad with granular location") .With( new ProviderServiceRequest { Method = HttpVerb.Post, Path = AdvertisementLink, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build() } ) .WillRespondWith( new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Location", location }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(allFieldsWithGranularLocationInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithGranularLocationState(null) .Build() }); var requestModel = new AdvertisementModelBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build(); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.CreateAdvertisementAsync(requestModel); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(allFieldsWithGranularLocationInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithGranularLocationState(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task PostAdWithInvalidAdvertisementDetailsWithCleanseJobAdDetailsOption() { const string advertisementId = "75b2b1fc-9050-4f45-a632-ec6b7ac2bb4a"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var location = $"http://localhost{link}"; var adDetailsBeforeCleanse = "<p style=\"text-align:justify; color:#FF00AA\">Colourful</p>"; var adDetailsAfterCleanse = "<p style=\"text-align:justify\">Colourful</p>"; this.Fixture.RegisterIndexPageInteractions(oAuth2Token); this.Fixture.AdPostingApiService .UponReceiving("a POST advertisement request to create a job ad with invalid advertisement details and with 'CleanseJobAdDetails' processing option") .With( new ProviderServiceRequest { Method = HttpVerb.Post, Path = AdvertisementLink, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(this.MinimumFieldsInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .WithAdvertisementDetails(adDetailsBeforeCleanse) .WithProcessingOptions(ProcessingOptionsType.CleanseAdvertisementDetails.ToString()) .Build() } ) .WillRespondWith( new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Location", location }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(this.MinimumFieldsInitializer) .WithState(AdvertisementState.Open.ToString()) .WithId(advertisementId) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithAdvertisementDetails(adDetailsAfterCleanse) .Build() }); var requestModel = new AdvertisementModelBuilder(this.MinimumFieldsInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .WithAdvertisementDetails(adDetailsBeforeCleanse) .WithProcessingOptions(ProcessingOptionsType.CleanseAdvertisementDetails) .Build(); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.CreateAdvertisementAsync(requestModel); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.MinimumFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithAdvertisementDetails(adDetailsAfterCleanse) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task GetExistingAdvertisementWithErrors() { const string advertisementId = "448b8474-6165-4eed-a5b5-d2bb52e471ef"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; this.Fixture.AdPostingApiService .Given("There is a failed classic advertisement") .UponReceiving("a GET advertisement request for an advertisement with errors") .With(new ProviderServiceRequest { Method = HttpVerb.Get, Path = link, Headers = new Dictionary<string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } } }) .WillRespondWith(new ProviderServiceResponse { Status = 200, Headers = new Dictionary<string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Processing-Status", "Failed" }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(this.MinimumFieldsInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithErrors(new { code = "Unauthorised", message = "Unauthorised" }) .WithAgentId(null) .Build() }); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link)); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.MinimumFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithProcessingStatus(ProcessingStatus.Failed) .WithErrors(new AdvertisementError { Code = "Unauthorised", Message = "Unauthorised" }) .WithAgentId(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task GetExistingAdvertisementWithWarnings() { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; this.Fixture.AdPostingApiService .Given("There is a pending standout advertisement with maximum data") .UponReceiving("a GET advertisement request for an advertisement with warnings") .With(new ProviderServiceRequest { Method = HttpVerb.Get, Path = link, Headers = new Dictionary<string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } } }) .WillRespondWith(new ProviderServiceResponse { Status = 200, Headers = new Dictionary<string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Processing-Status", "Pending" }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(AllFieldsInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithWarnings( new { field = "standout.logoId", code = "missing" }, new { field = "standout.bullets", code = "missing" }) .WithAgentId(null) .WithAdditionalProperties(AdditionalPropertyType.ResidentsOnly.ToString(), AdditionalPropertyType.Graduate.ToString()) .Build() }); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link)); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(this.AllFieldsInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithProcessingStatus(ProcessingStatus.Pending) .WithWarnings( new AdvertisementError { Field = "standout.logoId", Code = "missing" }, new AdvertisementError { Field = "standout.bullets", Code = "missing" }) .WithAgentId(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
private void AssertRetrievedAdvertisementMatchesExpected(AllFieldsInitializer builderInitializer, string advertisementId, AdvertisementResource result) { AdvertisementResource expectedResult = new AdvertisementResourceBuilder(builderInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithProcessingStatus(ProcessingStatus.Pending) .WithAgentId(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task UpdateWithInvalidAdvertisementDetailsWithCleanseJobAdDetailsOption() { OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{AdvertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{AdvertisementId}/view"; var adDetailsBeforeCleanse = "<p style=\"text-align:justify; font-family:'Comic Sans MS', cursive, sans-serif\">Whimsical</p>"; var adDetailsAfterCleanse = "<p style=\"text-align:justify\">Whimsical</p>"; this.Fixture.AdPostingApiService .Given("There is a standout advertisement with maximum data") .UponReceiving("a PUT advertisement request for advertisement with invalid advertisement details and with 'CleanseJobAdDetails' processing option") .With(new ProviderServiceRequest { Method = HttpVerb.Put, Path = link, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(this.MinimumFieldsInitializer) .WithAdvertisementType(AdvertisementType.StandOut.ToString()) .WithAdditionalProperties(AdditionalPropertyType.Graduate.ToString()) .WithAdvertisementDetails(adDetailsBeforeCleanse) .WithProcessingOptions(ProcessingOptionsType.CleanseAdvertisementDetails.ToString()) .Build() }) .WillRespondWith( new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(this.MinimumFieldsInitializer) .WithState(AdvertisementState.Open.ToString()) .WithId(AdvertisementId) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithAdvertisementType(AdvertisementType.StandOut.ToString()) .WithAdditionalProperties(AdditionalPropertyType.Graduate.ToString()) .WithAdvertisementDetails(adDetailsAfterCleanse) .Build() }); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.UpdateAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link), new AdvertisementModelBuilder(this.MinimumFieldsInitializer) .WithAdvertisementType(AdvertisementType.StandOut) .WithAdditionalProperties(AdditionalPropertyType.Graduate) .WithAdvertisementDetails(adDetailsBeforeCleanse) .WithProcessingOptions(ProcessingOptionsType.CleanseAdvertisementDetails) .Build()); } var expectedResult = new AdvertisementResourceBuilder(this.MinimumFieldsInitializer) .WithId(new Guid(AdvertisementId)) .WithLinks(AdvertisementId) .WithAdvertisementType(AdvertisementType.StandOut) .WithAdditionalProperties(AdditionalPropertyType.Graduate) .WithAdvertisementDetails(adDetailsAfterCleanse) .Build(); result.ShouldBeEquivalentTo(expectedResult); }