public async Task GetAdvertisementWhereAdvertiserNotRelatedToRequestor() { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().WithAccessToken(AccessTokens.OtherThirdPartyUploader).Build(); var link = $"{AdvertisementLink}/{advertisementId}"; this.Fixture.AdPostingApiService .Given("There is a standout advertisement with maximum data") .UponReceiving("a GET advertisement request for an advertisement of an advertiser not related to the requestor's account") .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 = 403, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementErrorVersion1 }, { "X-Request-Id", RequestId } }, Body = new { message = "Forbidden", errors = new[] { new { code = "RelationshipError" } } } }); UnauthorizedException actualException; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { actualException = await Assert.ThrowsAsync <UnauthorizedException>( async() => await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link))); } actualException.ShouldBeEquivalentToException( new UnauthorizedException( RequestId, 403, new AdvertisementErrorResponse { Message = "Forbidden", Errors = new[] { new AdvertisementError { Code = "RelationshipError" } } })); }
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); }
public async Task GetExistingAdvertisementUsingHalSelfLink(string givenStatement) { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var builderInitializer = new AllFieldsInitializer(); this.SetupPactForGettingExistingAdvertisement(givenStatement, link, oAuth2Token, builderInitializer, advertisementId, viewRenderedAdvertisementLink); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link)); } this.AssertRetrievedAdvertisementMatchesExpected(builderInitializer, advertisementId, result); }
public async Task GetNonExistentAdvertisement() { const string advertisementId = "9b650105-7434-473f-8293-4e23b7e0e064"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; this.Fixture.AdPostingApiService .UponReceiving("a GET advertisement request for a non-existent advertisement") .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 = 404, Headers = new Dictionary <string, string> { { "X-Request-Id", RequestId } } }); AdvertisementNotFoundException actualException; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { actualException = await Assert.ThrowsAsync <AdvertisementNotFoundException>( async() => await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link))); } actualException.ShouldBeEquivalentToException(new AdvertisementNotFoundException(RequestId)); }
public async Task GetExistingAdvertisementUsingHalTemplateWithAdvertisementId(LocationType locationType, string givenStatement) { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var builderInitializer = new AllFieldsInitializer(locationType); this.Fixture.RegisterIndexPageInteractions(oAuth2Token); this.SetupPactForGettingExistingAdvertisement(givenStatement, link, oAuth2Token, builderInitializer, advertisementId, viewRenderedAdvertisementLink); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Guid(advertisementId)); } this.AssertRetrievedAdvertisementMatchesExpected(builderInitializer, advertisementId, result); }