public async Task GivenIHaveAssignedTheFollowingDevicesToTheMerchants(Table table)
        {
            foreach (TableRow tableRow in table.Rows)
            {
                EstateDetails estateDetails = this.TestingContext.GetEstateDetails(tableRow);

                String token = this.TestingContext.AccessToken;
                if (String.IsNullOrEmpty(estateDetails.AccessToken) == false)
                {
                    token = estateDetails.AccessToken;
                }

                // Lookup the merchant id
                String merchantName = SpecflowTableHelper.GetStringRowValue(tableRow, "MerchantName");
                Guid   merchantId   = estateDetails.GetMerchantId(merchantName);

                // Lookup the operator id
                String deviceIdentifier = SpecflowTableHelper.GetStringRowValue(tableRow, "DeviceIdentifier");

                AddMerchantDeviceRequest addMerchantDeviceRequest = new AddMerchantDeviceRequest
                {
                    DeviceIdentifier = deviceIdentifier
                };

                AddMerchantDeviceResponse addMerchantDeviceResponse = await this.TestingContext.DockerHelper.EstateClient.AddDeviceToMerchant(token, estateDetails.EstateId, merchantId, addMerchantDeviceRequest, CancellationToken.None).ConfigureAwait(false);

                addMerchantDeviceResponse.EstateId.ShouldBe(estateDetails.EstateId);
                addMerchantDeviceResponse.MerchantId.ShouldBe(merchantId);
                addMerchantDeviceResponse.DeviceId.ShouldNotBe(Guid.Empty);

                this.TestingContext.Logger.LogInformation($"Device {deviceIdentifier} assigned to Merchant {merchantName} Estate {estateDetails.EstateName}");
            }
        }
        /// <summary>
        /// Handles the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <String> Handle(AddMerchantDeviceRequest request,
                                          CancellationToken cancellationToken)
        {
            await this.MerchantDomainService.AddDeviceToMerchant(request.EstateId, request.MerchantId, request.DeviceId, request.DeviceIdentifier, cancellationToken);

            return(string.Empty);
        }
Beispiel #3
0
        public void AddMerchantDeviceRequest_CanBeCreted_IsCreated()
        {
            AddMerchantDeviceRequest addMerchantDeviceRequest =
                AddMerchantDeviceRequest.Create(TestData.EstateId, TestData.MerchantId, TestData.DeviceId, TestData.DeviceIdentifier);

            addMerchantDeviceRequest.ShouldNotBeNull();
            addMerchantDeviceRequest.EstateId.ShouldBe(TestData.EstateId);
            addMerchantDeviceRequest.MerchantId.ShouldBe(TestData.MerchantId);
            addMerchantDeviceRequest.DeviceId.ShouldBe(TestData.DeviceId);
            addMerchantDeviceRequest.DeviceIdentifier.ShouldBe(TestData.DeviceIdentifier);
        }
Beispiel #4
0
        public void MerchantRequestHandler_AddMerchantDeviceRequest_IsHandled()
        {
            Mock <IMerchantDomainService> merchantDomainService = new Mock <IMerchantDomainService>();
            MerchantRequestHandler        handler = new MerchantRequestHandler(merchantDomainService.Object);

            AddMerchantDeviceRequest request = TestData.AddMerchantDeviceRequest;

            Should.NotThrow(async() =>
            {
                await handler.Handle(request, CancellationToken.None);
            });
        }
Beispiel #5
0
        /// <summary>
        /// Adds the device to merchant.
        /// </summary>
        /// <param name="accessToken">The access token.</param>
        /// <param name="estateId">The estate identifier.</param>
        /// <param name="merchantId">The merchant identifier.</param>
        /// <param name="addMerchantDeviceRequest">The add merchant device request.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <AddMerchantDeviceResponse> AddDeviceToMerchant(String accessToken,
                                                                          Guid estateId,
                                                                          Guid merchantId,
                                                                          AddMerchantDeviceRequest addMerchantDeviceRequest,
                                                                          CancellationToken cancellationToken)
        {
            AddMerchantDeviceResponse response = null;

            String requestUri = this.BuildRequestUrl($"/api/estates/{estateId}/merchants/{merchantId}/devices");

            try
            {
                String requestSerialised = JsonConvert.SerializeObject(addMerchantDeviceRequest);

                StringContent httpContent = new StringContent(requestSerialised, Encoding.UTF8, "application/json");

                // Add the access token to the client headers
                this.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

                // Make the Http Call here
                HttpResponseMessage httpResponse = await this.HttpClient.PostAsync(requestUri, httpContent, cancellationToken);

                // Process the response
                String content = await this.HandleResponse(httpResponse, cancellationToken);

                // call was successful so now deserialise the body to the response object
                response = JsonConvert.DeserializeObject <AddMerchantDeviceResponse>(content);
            }
            catch (Exception ex)
            {
                // An exception has occurred, add some additional information to the message
                Exception exception = new Exception($"Error adding device to merchant Id {merchantId} in estate {estateId}.", ex);

                throw exception;
            }

            return(response);
        }