示例#1
0
        /// <summary>
        /// Create a new connection for the user
        /// </summary>
        /// <param name="userid">Id of the user to create the connection to</param>
        /// <param name="connectionToCreate">The connection object to create</param>
        /// <returns>The created connection</returns>
        public async Task <Contracts.Connection.Connection> CreateConnectionForUser(Guid userid, Contracts.Connection.ConnectionCreation connectionToCreate)
        {
            // First make sure that the connection is ok
            var connectionTest = _mapper.Map <Contracts.Connection.ConnectionTest>(connectionToCreate);
            var testResult     = TestConnection(connectionTest);

            if (!testResult.AccountIds.Contains(connectionToCreate.ExternalAccountId))
            {
                throw new ProblemDetailsException(
                          System.Net.HttpStatusCode.BadRequest,
                          $"The account id '{connectionToCreate.ExternalAccountId}' doesn't exist in the connection."
                          );
            }

            // If it is then
            // 1. Save the connection to the DB
            var connectionToDb = _mapper.Map <Database.Connection.Connection>(connectionToCreate);

            connectionToDb.Type  = testResult.Type;
            connectionToDb.Owner = GetUserFromDb(userid);
            _dbContext.Add(connectionToDb);
            _dbContext.SaveChanges();

            // 2. Save to token to keyvault
            await _connectionsSecretService.CreateConnectionSecret(connectionToDb.Id, connectionToCreate.Secret);

            // Return created connection
            return(_mapper.Map <Contracts.Connection.Connection>(connectionToDb));
        }
示例#2
0
        public async void CreateConnectionSecret()
        {
            // Arrange
            var connectionId          = Guid.NewGuid();
            var connectionSecretKey   = $"ConnectionSecret-{connectionId}";
            var connectionSecretValue = "TopSecret";

            _secretClientMock.Setup(sc => sc.SetSecretAsync(connectionSecretKey, connectionSecretValue, It.IsAny <CancellationToken>()));

            // Act
            await _connectionsSecretService.CreateConnectionSecret(connectionId, connectionSecretValue);

            // Assert
            _secretClientMock.Verify(sc => sc.SetSecretAsync(connectionSecretKey, connectionSecretValue, It.IsAny <CancellationToken>()), Times.Once());
        }
示例#3
0
        public async void CreateConnectionSecret()
        {
            // Arrange
            var connectionId          = Guid.NewGuid();
            var connectionSecretKey   = $"ConnectionSecret-{connectionId}";
            var connectionSecretValue = "TopSecret";

            _cachingServiceMock.Setup(cs => cs.GetOrCreateValueAsync(connectionSecretKey, It.IsAny <Func <string> >(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(connectionSecretValue));

            // Act
            await _connectionsSecretService.CreateConnectionSecret(connectionId, connectionSecretValue);

            // Assert
            _cachingServiceMock.Verify(cs => cs.GetOrCreateValueAsync(connectionSecretKey, It.IsAny <Func <string> >(), It.IsAny <CancellationToken>()), Times.Once());
        }