Ejemplo n.º 1
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_accountCodeRepository != null)
                {
                    _accountCodeRepository.Dispose();
                    _accountCodeRepository = null;
                }

                if (_customerDynamicsRepository != null)
                {
                    _customerDynamicsRepository.Dispose();
                    _customerDynamicsRepository = null;
                }

                if (_bucketRepository != null)
                {
                    _bucketRepository.Dispose();
                    _bucketRepository = null;
                }
            }

            base.Dispose(disposing);
        }
Ejemplo n.º 2
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.º 3
0
        public GetBucketUnitTests()
        {
            BucketContext context = new BucketContext(new DbContextOptionsBuilder <BucketContext>()
                                                      .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                      .Options);

            this.repository = new BucketRepository(context);
        }
Ejemplo n.º 4
0
 public BucketUploader(IBucketRepository bucketRepository, IOptions <AppConfig> config, IFileRepository fileRepository, IFileProcessor fileProcessor)
 {
     _bucketRepository = bucketRepository;
     _fileRepository   = fileRepository;
     _fileProcessor    = fileProcessor;
     _httpClient       = new HttpClient();
     _config           = config.Value;
 }
Ejemplo n.º 5
0
 public AccountCodeController(IAccountCodeRepository accountCodeRepository,
                              ICustomerDynamicsRepository customerDynamicsRepository,
                              IBucketRepository bucketRepository)
 {
     _accountCodeRepository      = accountCodeRepository;
     _customerDynamicsRepository = customerDynamicsRepository;
     _bucketRepository           = bucketRepository;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultBucketService" /> class.
 /// </summary>
 /// <param name="repository">Repository to search for buckets in.</param>
 /// <param name="timerFactory">Factory to create timers and delays with.</param>
 /// <param name="logger">Logger used to log info to some destination(s).</param>
 public DefaultBucketService(
     IBucketRepository repository,
     ITimerFactory timerFactory,
     ILogger <DefaultBucketService> logger
     )
 {
     this.repository   = repository;
     this.timerFactory = timerFactory;
     this.logger       = logger;
 }
Ejemplo n.º 7
0
 public FileController(IBucketRepository bucketRepository,
                       IOptions <AwsBucketConfig> awsSetting, IServiceProvider serviceProvider,
                       IWebHostEnvironment webHostEnvironment, ILogger <FileController> logger)
 {
     _logger             = logger;
     _bucketRepository   = bucketRepository;
     _awsSetting         = awsSetting.Value;
     _serviceProvider    = serviceProvider;
     _webHostEnvironment = webHostEnvironment;
 }
Ejemplo n.º 8
0
        public static async Task <Bucket> GetOrFailAsync(this IBucketRepository repository, string name)
        {
            var bucket = await repository.GetAsync(name);

            if (bucket == null)
            {
                throw new CuboException("bucket_not_found", $"Bucket: '{name}' was not found.");
            }

            return(bucket);
        }
Ejemplo n.º 9
0
        public static async Task <Bucket> GetAsyncOrFail(this IBucketRepository repository, string bucketName)
        {
            var bucket = await repository.GetAsync(bucketName);

            if (bucket == null)
            {
                throw new CuboException("bucket_not_found", $"Bucket {bucketName} could not be found.");
            }

            return(bucket);
        }
Ejemplo n.º 10
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));
            }
        /*------------------------ FIELDS REGION ------------------------*/

        /*------------------------ METHODS REGION ------------------------*/
        public static async Task <Bucket> GetOrFailAsync(this IBucketRepository repository,
                                                         string name)
        {
            Bucket bucket = await repository.GetAsync(name);

            if (bucket == null)
            {
                throw new BucketNotFoundException();
            }

            return(bucket);
        }
Ejemplo n.º 12
0
            public async Task ShouldReturnTheBucket(
                Request request,
                [Frozen] Bucket bucket,
                [Frozen, Substitute] ITimerFactory timerFactory,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                var result = await service.GetBucketAndWaitForAvailability(request, cancellationToken);

                result.Should().Be(bucket);
            }
Ejemplo n.º 13
0
            public async Task ShouldNotDelayIfHitsRemainingIsNotZero(
                Request request,
                [Frozen] Bucket bucket,
                [Frozen, Substitute] ITimerFactory timerFactory,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                bucket.HitsRemaining = 1;
                await service.GetBucketAndWaitForAvailability(request, cancellationToken);

                await timerFactory.DidNotReceive().CreateDelay(Is((int)Math.Ceiling((bucket.ResetAfter - DateTimeOffset.Now).TotalMilliseconds)), Is(cancellationToken));
            }
Ejemplo n.º 14
0
            public async Task ShouldNotDecreaseTheNumberOfHitsByOneIfHitsRemainingIsZero(
                Request request,
                [Frozen] Bucket bucket,
                [Frozen, Substitute] ITimerFactory timerFactory,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                bucket.HitsRemaining = 0;
                var result = await service.GetBucketAndWaitForAvailability(request, cancellationToken);

                result.HitsRemaining.Should().Be(0);
            }
Ejemplo n.º 15
0
 public CsvDownloaderJob(IBucketUploader bucketUploader,
                         IElectionConfigurationSource electionConfigurationSource,
                         IResultsRepository resultsRepository,
                         IBucketRepository bucketRepository,
                         IVoterTurnoutAggregator voterTurnoutAggregator,
                         IOptions <AppConfig> config)
 {
     _bucketUploader = bucketUploader;
     _electionConfigurationSource = electionConfigurationSource;
     _resultsRepository           = resultsRepository;
     _bucketRepository            = bucketRepository;
     _voterTurnoutAggregator      = voterTurnoutAggregator;
     _config = config.Value;
     Log.LogInformation($"Interval is set to: {_config.IntervalInSeconds} seconds");
 }
Ejemplo n.º 16
0
            public async Task ShouldDelayUntilResetAfterIsReachedIfHitsRemainingIsZero(
                int secondsToWait,
                Request request,
                [Frozen] Bucket bucket,
                [Frozen, Substitute] ITimerFactory timerFactory,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                bucket.HitsRemaining = 0;
                bucket.ResetAfter    = DateTimeOffset.Now + TimeSpan.FromSeconds(secondsToWait);
                await service.GetBucketAndWaitForAvailability(request, cancellationToken);

                await timerFactory.Received().CreateDelay(Is <int>(ms => ms >= (secondsToWait * 1000) - 20), Is(cancellationToken));
            }
Ejemplo n.º 17
0
 public BucketService(
     ILogger <IBucketRepository> logger,
     IBucketRepository bucketRepository,
     IApiBucketRequestModelValidator bucketModelValidator,
     IBOLBucketMapper bolbucketMapper,
     IDALBucketMapper dalbucketMapper,
     IBOLFileMapper bolFileMapper,
     IDALFileMapper dalFileMapper)
     : base(logger,
            bucketRepository,
            bucketModelValidator,
            bolbucketMapper,
            dalbucketMapper,
            bolFileMapper,
            dalFileMapper)
 {
 }
Ejemplo n.º 18
0
 public CsvDownloaderJob(IBucketUploader bucketUploader,
                         IElectionConfigurationSource electionConfigurationSource,
                         IResultsRepository resultsRepository,
                         IBucketRepository bucketRepository,
                         IVoterTurnoutAggregator voterTurnoutAggregator,
                         ILogger <CsvDownloaderJob> logger,
                         IOptions <AppConfig> config)
 {
     _bucketUploader = bucketUploader;
     _electionConfigurationSource = electionConfigurationSource;
     _resultsRepository           = resultsRepository;
     _bucketRepository            = bucketRepository;
     _voterTurnoutAggregator      = voterTurnoutAggregator;
     _logger = logger;
     _config = config.Value;
     _logger.LogInformation($"JobTimer is set to: {_config.JobTimer}");
 }
Ejemplo n.º 19
0
        public BucketService(
            ILogger <IBucketService> logger,
            MediatR.IMediator mediator,
            IBucketRepository bucketRepository,
            IApiBucketServerRequestModelValidator bucketModelValidator,
            IDALBucketMapper dalBucketMapper,
            IDALFileMapper dalFileMapper)
            : base()
        {
            this.BucketRepository     = bucketRepository;
            this.BucketModelValidator = bucketModelValidator;
            this.DalBucketMapper      = dalBucketMapper;
            this.DalFileMapper        = dalFileMapper;
            this.logger = logger;

            this.mediator = mediator;
        }
Ejemplo n.º 20
0
        public GetBucketsUnitTests()
        {
            BucketContext context = new BucketContext(new DbContextOptionsBuilder <BucketContext>()
                                                      .UseInMemoryDatabase(Guid.NewGuid().ToString())
                                                      .Options);

            this.repository = new BucketRepository(context);

            this.testBuckets.Add(new Bucket {
                Name = "B", Description = "1", Size = 3
            });
            this.testBuckets.Add(new Bucket {
                Name = "A", Description = "3", Size = 9
            });
            this.testBuckets.Add(new Bucket {
                Name = "B", Description = "1", Size = 7
            });
            this.testBuckets.Add(new Bucket {
                Name = "B", Description = "3", Size = 10
            });
            this.testBuckets.Add(new Bucket {
                Name = "B", Description = "3", Size = 4
            });
            this.testBuckets.Add(new Bucket {
                Name = "A", Description = "3", Size = 6
            });
            this.testBuckets.Add(new Bucket {
                Name = "B", Description = "2", Size = 1
            });
            this.testBuckets.Add(new Bucket {
                Name = "A", Description = "2", Size = 11
            });
            this.testBuckets.Add(new Bucket {
                Name = "A", Description = "1", Size = 5
            });
            this.testBuckets.Add(new Bucket {
                Name = "A", Description = "2", Size = 12
            });
            this.testBuckets.Add(new Bucket {
                Name = "B", Description = "2", Size = 2
            });
            this.testBuckets.Add(new Bucket {
                Name = "A", Description = "1", Size = 8
            });
        }
Ejemplo n.º 21
0
 public AbstractBucketService(
     ILogger logger,
     IBucketRepository bucketRepository,
     IApiBucketRequestModelValidator bucketModelValidator,
     IBOLBucketMapper bolBucketMapper,
     IDALBucketMapper dalBucketMapper,
     IBOLFileMapper bolFileMapper,
     IDALFileMapper dalFileMapper)
     : base()
 {
     this.bucketRepository     = bucketRepository;
     this.bucketModelValidator = bucketModelValidator;
     this.bolBucketMapper      = bolBucketMapper;
     this.dalBucketMapper      = dalBucketMapper;
     this.bolFileMapper        = bolFileMapper;
     this.dalFileMapper        = dalFileMapper;
     this.logger = logger;
 }
Ejemplo n.º 22
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DefaultRequestInvoker" /> class.
 /// </summary>
 /// <param name="client">Client used to send/recieve http messages.</param>
 /// <param name="urlBuilder">Builder used to build URLs from requests.</param>
 /// <param name="relay">Service used to relay messages back and forth between SQS.</param>
 /// <param name="bucketService">Service used to manage buckets.</param>
 /// <param name="bucketRepository">Repository to manage buckets.</param>
 /// <param name="reporter">Service used to report metrics.</param>
 /// <param name="logger">Logger used to log info to some destination(s).</param>
 public DefaultRequestInvoker(
     HttpMessageInvoker client,
     IUrlBuilder urlBuilder,
     IRequestMessageRelay relay,
     IBucketService bucketService,
     IBucketRepository bucketRepository,
     IMetricReporter reporter,
     ILogger <DefaultRequestInvoker> logger
     )
 {
     this.client           = client;
     this.urlBuilder       = urlBuilder;
     this.relay            = relay;
     this.bucketService    = bucketService;
     this.bucketRepository = bucketRepository;
     this.reporter         = reporter;
     this.logger           = logger;
 }
Ejemplo n.º 23
0
            public async Task ShouldNotCreateNewBucketIfOneWasFound(
                Request request,
                [Frozen] Bucket bucket,
                [Frozen, Substitute] IBucketRepository repository,
                [Target] DefaultBucketService service,
                CancellationToken cancellationToken
                )
            {
                await service.GetBucketAndWaitForAvailability(request, cancellationToken);

                await repository.DidNotReceive().Add(
                    Is <Bucket>(bucket =>
                                bucket.Endpoints == Convert.ToUInt64(request.Endpoint.Value) &&
                                bucket.ApiCategory == request.Endpoint.Category &&
                                bucket.MajorParameters == request.Parameters &&
                                bucket.HitsRemaining == 1
                                ),
                    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.º 25
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)
                    );
            }
Ejemplo n.º 26
0
 public BucketService(IBucketRepository bucketRepository, IMapper mapper)
 {
     _bucketRepository = bucketRepository;
     _mapper           = mapper;
 }
Ejemplo n.º 27
0
 public Handler(IBucketRepository repository)
 {
     this.repository = repository;
 }
 public BucketController(IBucketRepository bucketRepository)
 {
     _bucketRepository = bucketRepository;
 }
Ejemplo n.º 29
0
 public BucketsController(IBucketRepository bucketRepository)
 {
     this.bucketRepository = bucketRepository;
 }
Ejemplo n.º 30
0
 public BucketController(IBucketRepository bucketRepository, ILogger <BucketController> logger)
 {
     _bucketRepository = bucketRepository;
     _logger           = logger;
 }
Ejemplo n.º 31
0
 public BucketService(IBucketRepository repository, IMapper mapper)
 {
     _repository = repository;
     _mapper     = mapper;
 }
Ejemplo n.º 32
0
 public BucketService(IBucketRepository bucketRepository)
 {
     _bucketRepository = bucketRepository;
 }