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)); }
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)); }
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) ); }