Пример #1
0
        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"
                                  } }
            }));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }