public async Task ReturnObjecResultsWithHybridConnectionDtoAndStatusCodeOkAsync() { // Arrange IRelayAzureManagementService relayAzureManagementService = A.Fake <IRelayAzureManagementService>(); ILogger logger = A.Fake <ILogger>(); var sut = new RelayHybridConnectionApi(relayAzureManagementService); var httpContext = new DefaultHttpContext(); var createRelayStorageDto = new CreateRelayDto() { TenantId = TestHelper.TenantId }; var httpRequest = new DefaultHttpRequest(httpContext) { Body = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(createRelayStorageDto))) }; var hybridConnectionDto = new HybridConnectionDto(TestHelper.GetDefaultLocalHostUri, new PolicyDto[2] { TestHelper.GetListenPolicyDto(), TestHelper.GetSendPolicyDto() }); A.CallTo(() => relayAzureManagementService.CreateHybridConnection(createRelayStorageDto)).WithAnyArguments().Returns(hybridConnectionDto); // Act IActionResult actual = await sut.CreateRelayHybridConnectionAsync(httpRequest, logger); // Assert Assert.Equal(HttpStatusCode.OK, (HttpStatusCode)((ObjectResult)actual).StatusCode); Assert.Equal(hybridConnectionDto, (HybridConnectionDto)((ObjectResult)actual).Value); }
public async Task ReturnHybridConnectionDtoWhenCreateHybridConnectionIsCalledAsync() { // Arrange IRelayManagementApiClient relayManagementApiClient = A.Fake <IRelayManagementApiClient>(); IRelayAzureManagementService sut = new RelayAzureManagementService(relayManagementApiClient); var tenantId = TestHelper.TenantId; var createRelayDto = new CreateRelayDto() { TenantId = tenantId }; A.CallTo(() => relayManagementApiClient.CreateHybridConnectionAsync(tenantId)).Returns(TestHelper.GetDefaultLocalHostUri); A.CallTo(() => relayManagementApiClient.CreatePolicykeyAsync(tenantId, PolicyClaim.Listen)).Returns(TestHelper.GetListenPolicyDto()); A.CallTo(() => relayManagementApiClient.CreatePolicykeyAsync(tenantId, PolicyClaim.Send)).Returns(TestHelper.GetSendPolicyDto()); // Act HybridConnectionDto actual = await sut.CreateHybridConnection(createRelayDto); // Assert Assert.Equal(TestHelper.GetDefaultLocalHostUri, actual.HybridConnectionUrl); Assert.Equal(TestHelper.GetListenPolicyDto().PolicyKey, actual.PolicyDtos.FirstOrDefault(x => x.PolicyType == PolicyClaim.Listen).PolicyKey); Assert.Equal(TestHelper.GetSendPolicyDto().PolicyKey, actual.PolicyDtos.FirstOrDefault(x => x.PolicyType == PolicyClaim.Send).PolicyKey); Assert.Equal(TestHelper.GetListenPolicyDto().PolicyName, actual.PolicyDtos.FirstOrDefault(x => x.PolicyType == PolicyClaim.Listen).PolicyName); Assert.Equal(TestHelper.GetSendPolicyDto().PolicyName, actual.PolicyDtos.FirstOrDefault(x => x.PolicyType == PolicyClaim.Send).PolicyName); Assert.Equal(TestHelper.GetListenPolicyDto().PolicyType, actual.PolicyDtos.FirstOrDefault(x => x.PolicyType == PolicyClaim.Listen).PolicyType); Assert.Equal(TestHelper.GetSendPolicyDto().PolicyType, actual.PolicyDtos.FirstOrDefault(x => x.PolicyType == PolicyClaim.Send).PolicyType); }
public async Task <IActionResult> CreateRelayHybridConnectionAsync( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "relay/hybridconnection")] HttpRequest req, ILogger log) { var requestBody = await new StreamReader(req.Body).ReadToEndAsync(); CreateRelayDto createRelayDto = JsonConvert.DeserializeObject <CreateRelayDto>(requestBody); HybridConnectionDto response = await _relayAzureManagement.CreateHybridConnection(createRelayDto); if (response != null) { return(new OkObjectResult(response)); } else { return(new BadRequestResult()); } }
async Task <HybridConnectionDto> IRelayAzureManagementService.CreateHybridConnection(CreateRelayDto createRelayStorageDto) { if (createRelayStorageDto is null) { throw new ArgumentNullException(nameof(createRelayStorageDto)); } Uri hybridConnectionUrl = await _relayManagementApiClient.CreateHybridConnectionAsync(createRelayStorageDto.TenantId); PolicyDto policySendKey = await _relayManagementApiClient.CreatePolicykeyAsync(createRelayStorageDto.TenantId, PolicyClaim.Send); PolicyDto policyListenKey = await _relayManagementApiClient.CreatePolicykeyAsync(createRelayStorageDto.TenantId, PolicyClaim.Listen); return(new HybridConnectionDto(hybridConnectionUrl, new PolicyDto[] { policySendKey, policyListenKey })); }