Ejemplo n.º 1
0
        public async void CreateConnection()
        {
            // Arrange
            var userId = Guid.NewGuid();

            MockUserContext(userId);

            var connectionToCreate = new ConnectionCreation()
            {
                Broker            = ForexMiner.Heimdallr.Common.Data.Database.Models.Connection.Broker.Oanda,
                ExternalAccountId = "1234",
                Name   = "Test Broker",
                Secret = "TopSecret"
            };

            var connectionId = Guid.NewGuid();

            _connectionServiceMock.Setup(cs => cs.CreateConnectionForUser(userId, connectionToCreate)).Returns(Task.FromResult(new Connection()
            {
                Id = connectionId
            }));

            // Act
            var connection = await _connectionsController.CreateConnection(connectionToCreate);

            // Assert
            _connectionServiceMock.Verify(cs => cs.CreateConnectionForUser(userId, connectionToCreate), Times.Once());
            Assert.Equal(connectionId, connection.Id);
        }
Ejemplo n.º 2
0
        public void CreateConnection()
        {
            // Arrange
            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id        = userId,
                Email     = "*****@*****.**",
                FirstName = "Elek",
                LastName  = "Test",
                Role      = Role.Trader
            };

            user.UpdatePassword("SuperSecretivePassword");
            _dbContext.Add(user);
            _dbContext.SaveChanges();

            var connectionToCreate = new ConnectionCreation()
            {
                Broker            = Database.Broker.Oanda,
                ExternalAccountId = "1234",
                Name   = "Test Connection",
                Secret = "TopSecret"
            };

            var oandaConnectionMock = new Mock <IOandaApiConnection>();

            oandaConnectionMock.Setup(oc => oc.GetAccounts()).Returns(new List <AccountProperties>()
            {
                new AccountProperties()
                {
                    Id = connectionToCreate.ExternalAccountId
                }
            });
            _oandaApiFactoryMock.Setup(ocf => ocf.CreateConnection(GeriRemenyi.Oanda.V20.Sdk.Common.Types.OandaConnectionType.FxPractice, connectionToCreate.Secret, It.IsAny <DateTimeFormat>()))
            .Returns(oandaConnectionMock.Object);

            _connectionsSecretServiceMock.Setup(css => css.CreateConnectionSecret(It.IsAny <Guid>(), connectionToCreate.Secret));

            // Act
            _connectionService.CreateConnectionForUser(userId, connectionToCreate);

            // Assert
            Assert.Single(_dbContext.Connections);
            Assert.Equal(connectionToCreate.Broker, _dbContext.Connections.ToList().ElementAt(0).Broker);
            Assert.Equal(connectionToCreate.ExternalAccountId, _dbContext.Connections.ToList().ElementAt(0).ExternalAccountId);
            Assert.Equal(connectionToCreate.Name, _dbContext.Connections.ToList().ElementAt(0).Name);
            _connectionsSecretServiceMock.Verify(css => css.CreateConnectionSecret(It.IsAny <Guid>(), connectionToCreate.Secret), Times.Once());
        }
Ejemplo n.º 3
0
        public async void CreateConnection_Invalid_AccountId()
        {
            // Arrange
            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id        = userId,
                Email     = "*****@*****.**",
                FirstName = "Elek",
                LastName  = "Test",
                Role      = Role.Trader
            };

            user.UpdatePassword("SuperSecretivePassword");
            _dbContext.Add(user);
            _dbContext.SaveChanges();

            var connectionToCreate = new ConnectionCreation()
            {
                Broker            = Database.Broker.Oanda,
                ExternalAccountId = "1234",
                Name   = "Test Connection",
                Secret = "TopSecret"
            };

            var oandaConnectionMock = new Mock <IOandaApiConnection>();

            oandaConnectionMock.Setup(oc => oc.GetAccounts()).Returns(new List <AccountProperties>()
            {
                new AccountProperties()
                {
                    Id = "4321"
                }
            });
            _oandaApiFactoryMock.Setup(ocf => ocf.CreateConnection(GeriRemenyi.Oanda.V20.Sdk.Common.Types.OandaConnectionType.FxPractice, connectionToCreate.Secret, It.IsAny <DateTimeFormat>()))
            .Returns(oandaConnectionMock.Object);

            _connectionsSecretServiceMock.Setup(css => css.CreateConnectionSecret(It.IsAny <Guid>(), connectionToCreate.Secret));

            // Act
            // Assert
            var exception = await Assert.ThrowsAsync <ProblemDetailsException>(async() => await _connectionService.CreateConnectionForUser(userId, connectionToCreate));

            Assert.Equal(HttpStatusCode.BadRequest, exception.Status);
            Assert.Empty(_dbContext.Connections);
            _connectionsSecretServiceMock.Verify(css => css.CreateConnectionSecret(It.IsAny <Guid>(), connectionToCreate.Secret), Times.Never());
        }
 public async Task <Connection> CreateConnection([FromBody] ConnectionCreation connection)
 {
     return(await _connectionService.CreateConnectionForUser(WhoAmI(), connection));
 }