public List <AssetNetworkPort> Resolve(NetworkConnectionDto source, NetworkConnection destination, List <AssetNetworkPort> destMember, ResolutionContext context)
 {
     return(source.Ports
            .Select(o =>
     {
         var port = _networkRepo.GetNetworkPort(o.Id);
         // overwrite the mac address with what has been provided
         port.MacAddress = o.MacAddress;
         return port;
     })
            .ToList());
 }
        public async Task CreateConnection_TwoExistingPorts_Success()
        {
            using (var scope = _provider.CreateScope())
            {
                await SetupAssetData(scope);
            }

            var portOneId = _asset.NetworkPorts[0]
                            .Id;
            var portTwoId = _asset.NetworkPorts[1]
                            .Id;

            const string portOneUpdatedMac = "11:22:33:44:55:66";
            const string portTwoUpdatedMac = "aa:bb:cc:dd:ee:ff";

            var connectionDto = new NetworkConnectionDto
            {
                Ports = new List <AssetNetworkPortDto>
                {
                    new AssetNetworkPortDto
                    {
                        Id         = portOneId,
                        MacAddress = portOneUpdatedMac
                    },
                    new AssetNetworkPortDto
                    {
                        Id         = portTwoId,
                        MacAddress = portTwoUpdatedMac
                    }
                }
            };

            using (var scope = _provider.CreateScope())
            {
                var networkService = scope.ServiceProvider.GetRequiredService <INetworkService>();
                var connectionId   = await networkService.CreateConnectionAsync(connectionDto);

                var assetService = scope.ServiceProvider.GetRequiredService <IAssetService>();
                var asset        = await assetService.GetAssetAsync(_asset.Id);

                var connection = await networkService.GetConnectionAsync(connectionId);

                connection.Ports.Should()
                .HaveCount(2);
                connection.Ports.Should()
                .Contain(port => port.Id == portOneId && port.MacAddress == portOneUpdatedMac);
                connection.Ports.Should()
                .Contain(port => port.Id == portTwoId && port.MacAddress == portTwoUpdatedMac);
            }
        }
        public async Task <Guid> CreateConnectionAsync(NetworkConnectionDto connectionDto)
        {
            var connection = _mapper.Map <NetworkConnection>(connectionDto);

            return(await _repository.AddConnectionAsync(connection));
        }