public void ShouldReturnCurrentLoggedInUser()
            {
                var securityContext = A.Fake <ISecurityContext>();

                ConfigureSecurityContextFactory_ToReturn(securityContext);
                var expectedRequest = new GetCurrentUserRequest {
                    SecurityContext = securityContext
                };

                var expectedUser = new Api.Models.User {
                    UniqueId = Guid.NewGuid()
                };

                A.CallTo(() => _getCurrentUserHandler.Handle(A <GetCurrentUserRequest> .That.HasSamePropertyValuesAs(expectedRequest))).Returns(expectedUser);

                var actual = Get();

                Assert.That(actual.StatusCode, Is.EqualTo(HttpStatusCode.OK));
                var actualDeserialized = actual.Body.DeserializeJson <Api.Models.User>();

                Assert.That(actualDeserialized.HasSamePropertyValuesAs(expectedUser));

                A.CallTo(() => _getCurrentUserHandler
                         .Handle(A <GetCurrentUserRequest> .That.Matches(req => req.HasSamePropertyValuesAs(expectedRequest))))
                .MustHaveHappened();
            }
Exemple #2
0
        /// <summary>
        /// Creates a new <see cref="User"/> from a given <paramref name="model"/>.
        /// </summary>
        /// <param name="model">The <see cref="Api.Models.User"/> to use as a template.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation.</param>
        /// <returns>A <see cref="Task{TResult}"/> resulting in a new <see cref="User"/> on success, <see langword="null"/> if the requested <see cref="UserGroup"/> did not exist.</returns>
        async Task <Models.User> CreateNewUserFromModel(Api.Models.User model, CancellationToken cancellationToken)
        {
            Models.PermissionSet permissionSet = null;
            Models.UserGroup     group         = null;
            if (model.Group != null)
            {
                group = await DatabaseContext
                        .Groups
                        .AsQueryable()
                        .Where(x => x.Id == model.Group.Id)
                        .Include(x => x.PermissionSet)
                        .FirstOrDefaultAsync(cancellationToken)
                        .ConfigureAwait(false);
            }
            else
            {
                permissionSet = new Models.PermissionSet
                {
                    AdministrationRights  = model.PermissionSet?.AdministrationRights ?? AdministrationRights.None,
                    InstanceManagerRights = model.PermissionSet?.InstanceManagerRights ?? InstanceManagerRights.None,
                }
            };

            return(new Models.User
            {
                CreatedAt = DateTimeOffset.UtcNow,
                CreatedBy = AuthenticationContext.User,
                Enabled = model.Enabled ?? false,
                PermissionSet = permissionSet,
                Group = group,
                Name = model.Name,
                SystemIdentifier = model.SystemIdentifier,
                OAuthConnections = model
                                   .OAuthConnections
                                   ?.Select(x => new Models.OAuthConnection
                {
                    Provider = x.Provider,
                    ExternalUserId = x.ExternalUserId
                })
                                   .ToList()
                                   ?? new List <Models.OAuthConnection>(),
            });
        }
    }
Exemple #3
0
            public async Task GivenContextWithUser_ReturnsAdaptedUser()
            {
                var user = new User {
                    Login = new Login {
                        Value = "JohnD"
                    }, LastName = "Doe"
                };

                ConfigureSecurityContext_ToReturn(user);
                var request = new GetCurrentUserRequest {
                    SecurityContext = _securityContext
                };

                var expected = new Api.Models.User {
                    LastName = "Doe"
                };

                A.CallTo(() => _userAdapter.Adapt(user)).Returns(expected);

                var actual = await _sut.Handle(request);

                actual.ShouldBeEquivalentTo(expected);
            }