Ejemplo n.º 1
0
            public async Task ShouldUpdateTheNewBucketsRemoteIdIfNoExistingBucketWithRemoteId(
                string remoteId,
                Bucket bucket,
                Bucket existingBucket,
                [Frozen] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                bucket.RemoteId            = null;
                bucket.Endpoints           = (long)ChannelEndpoint.CreateMessage;
                bucket.ApiCategory         = 'c';
                existingBucket.Endpoints   = (long)ChannelEndpoint.DeleteMessage;
                existingBucket.ApiCategory = 'c';

                var httpResponse = new HttpResponseMessage();

                httpResponse.Headers.Add("x-ratelimit-bucket", new[] { remoteId });

                repository.FindByRemoteIdAndMajorParameters(Any <string>(), Any <MajorParameters>(), Any <CancellationToken>()).Returns((Bucket)null !);
                var result = await service.MergeBucketIds(bucket, httpResponse, cancellationToken);

                result.Should().Be(bucket);
                result.RemoteId.Should().Be(remoteId);
                await repository.Received().FindByRemoteIdAndMajorParameters(Is(remoteId), Is(bucket.MajorParameters), Is(cancellationToken));
            }
Ejemplo n.º 2
0
            public async Task ShouldFetchBucketFromTheRepository(
                Request request,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                await service.GetBucketAndWaitForAvailability(request, cancellationToken);

                await repository.Received().FindByEndpointAndMajorParameters(Is(request.Endpoint), Is((MajorParameters)request.Parameters), Is(cancellationToken));
            }
            public async Task ShouldSaveChangesToTheBucket(
                string response,
                RequestMessage request,
                [Frozen] HttpStatusCode statusCode,
                [Frozen] Bucket bucket,
                [Frozen] HttpResponseMessage httpResponse,
                [Frozen, Substitute] HttpMessageInvoker client,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultRequestInvoker invoker,
                CancellationToken cancellationToken
                )
            {
                httpResponse.Content   = new StringContent(response);
                request.RequestDetails = new Request(ChannelEndpoint.CreateMessage)
                {
                    RequestBody = null
                };
                await invoker.Invoke(request, cancellationToken);

                await repository.Received().Save(Is(bucket), Is(cancellationToken));
            }
Ejemplo n.º 4
0
            public async Task ShouldCreateNewBucketIfOneWasntFound(
                Request request,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                var resetAfter = DateTimeOffset.Now;

                repository.FindByEndpointAndMajorParameters(Any <Endpoint>(), Any <MajorParameters>(), Any <CancellationToken>()).Returns((Bucket?)null);
                await service.GetBucketAndWaitForAvailability(request, cancellationToken);

                await repository.Received().Add(
                    Is <Bucket>(bucket =>
                                bucket.Endpoints == Convert.ToUInt64(request.Endpoint.Value) &&
                                bucket.ApiCategory == request.Endpoint.Category &&
                                bucket.MajorParameters == request.Parameters &&
                                bucket.HitsRemaining == 1 &&
                                bucket.ResetAfter >= resetAfter
                                ),
                    Is(cancellationToken)
                    );
            }