コード例 #1
0
        public void CreateNewOrganization_Returns_Ok(OrganizationTypeKeys organizationType, bool expectRolesAssigned)
        {
            //Arrange
            var newOrg = new Organization
            {
                Name   = A <string>(),
                TypeId = (int)organizationType
            };

            _userRepository.Setup(x => x.GetByKey(_user.Id)).Returns(_user);
            ExpectAllowCreateReturns <Organization>(true);
            _authorizationContext.Setup(x => x.HasPermission(It.IsAny <DefineOrganizationTypePermission>()))
            .Returns(true);
            var transaction = new Mock <IDatabaseTransaction>();

            _transactionManager.Setup(x => x.Begin(IsolationLevel.Serializable)).Returns(transaction.Object);
            _organizationRepository.Setup(x => x.Insert(newOrg)).Returns(newOrg);

            //Act
            var result = _sut.CreateNewOrganization(newOrg);

            //Assert
            Assert.True(result.Ok);
            Assert.Same(newOrg, result.Value);
            transaction.Verify(x => x.Commit(), Times.Once);
            Assert.Equal(1, newOrg.OrgUnits.Count);
            Assert.Equal(newOrg.Name, newOrg.OrgUnits.First().Name);
            Assert.NotNull(newOrg.Config);
            _organizationRepository.Verify(x => x.Save(), Times.Once);
            _roleService.Verify(x => x.MakeLocalAdmin(_user, newOrg), Times.Exactly(expectRolesAssigned ? 1 : 0));
            _roleService.Verify(x => x.MakeUser(_user, newOrg), Times.Exactly(expectRolesAssigned ? 1 : 0));
        }
コード例 #2
0
 public bool CanChangeOrganizationType(Organization organization, OrganizationTypeKeys organizationType)
 {
     if (organization == null)
     {
         throw new ArgumentNullException(nameof(organization));
     }
     return
         (_authorizationContext.AllowModify(organization) &&
          _authorizationContext.HasPermission(new DefineOrganizationTypePermission(organizationType, organization.Id)));
 }
コード例 #3
0
        public void AllowChangeOrganizationType_Returns(OrganizationTypeKeys organizationType, bool globalAdmin, bool localAdmin, bool expectedResult)
        {
            //Arrange
            var organizationId = A <int>();

            ExpectUserIsGlobalAdmin(globalAdmin);
            ExpectHasRoleReturns(organizationId, OrganizationRole.LocalAdmin, localAdmin);

            //Act
            var result = _sut.HasPermission(new DefineOrganizationTypePermission(organizationType, organizationId));

            //Assert
            Assert.Equal(expectedResult, result);
        }
コード例 #4
0
        public void HasPermission_With_DefineOrganizationTypePermission_Returns(OrganizationTypeKeys organizationType, OrganizationRole userRole, bool expectedResult)
        {
            //Arrange
            var organizationId = A <int>();

            ExpectUserHasRoles(organizationId, userRole);
            ExpectUserIsGlobalAdmin(userRole == OrganizationRole.GlobalAdmin);

            //Act
            var actual = _sut.HasPermission(new DefineOrganizationTypePermission(organizationType, organizationId));

            //Assert
            Assert.Equal(expectedResult, actual);
        }
コード例 #5
0
        public async Task Cannot_Create_Organization_Of_Type(OrganizationRole role, OrganizationTypeKeys organizationType)
        {
            //Arrange
            var login = await HttpApi.GetCookieAsync(role);

            var name = A <string>();
            var cvr  = (A <int>() % 9999999999).ToString("D10");
            const AccessModifier accessModifier = AccessModifier.Public;

            //Act - perform the action with the actual role
            using (var result = await OrganizationHelper.SendCreateOrganizationRequestAsync(TestEnvironment.DefaultOrganizationId, name, cvr, organizationType, accessModifier, login))
            {
                //Assert
                Assert.Equal(HttpStatusCode.Forbidden, result.StatusCode);
            }
        }
コード例 #6
0
        public async Task Can_Create_Organization_Of_Type(OrganizationRole role, OrganizationTypeKeys organizationType)
        {
            //Arrange
            var login = await HttpApi.GetCookieAsync(role);

            var name = A <string>();
            var cvr  = (A <int>() % 9999999999).ToString("D10");
            const AccessModifier accessModifier = AccessModifier.Public;

            //Act - perform the action with the actual role
            var result = await OrganizationHelper.CreateOrganizationAsync(TestEnvironment.DefaultOrganizationId, name, cvr, organizationType, accessModifier, login);

            //Assert
            Assert.Equal(accessModifier, result.AccessModifier);
            Assert.Equal(name, (string)result.Name);
            Assert.Equal(cvr, (string)result.Cvr);
        }
コード例 #7
0
 public DefineOrganizationTypePermission(OrganizationTypeKeys targetOrganizationType, int parentOrganizationId)
 {
     TargetOrganizationType = targetOrganizationType;
     ParentOrganizationId   = parentOrganizationId;
 }
コード例 #8
0
        public static async Task <HttpResponseMessage> SendCreateOrganizationRequestAsync(int owningOrganizationId, string name, string cvr, OrganizationTypeKeys type, AccessModifier accessModifier, Cookie optionalLogin = null)
        {
            var cookie = optionalLogin ?? await HttpApi.GetCookieAsync(OrganizationRole.GlobalAdmin);

            var url = TestEnvironment.CreateUrl("odata/Organizations");

            var body = new
            {
                AccessModifier = ((int)accessModifier).ToString("D"),
                Cvr            = cvr,
                Id             = owningOrganizationId, //This looks odd, but is checked in BaseEntityController. Id is changed once created
                Name           = name,
                TypeId         = (int)type
            };

            return(await HttpApi.PostWithCookieAsync(url, cookie, body));
        }
コード例 #9
0
        public static async Task <Organization> CreateOrganizationAsync(int owningOrganizationId, string name, string cvr, OrganizationTypeKeys type, AccessModifier accessModifier, Cookie optionalLogin = null)
        {
            using var createdResponse = await SendCreateOrganizationRequestAsync(owningOrganizationId, name, cvr, type, accessModifier, optionalLogin);

            Assert.Equal(HttpStatusCode.Created, createdResponse.StatusCode);
            return(await createdResponse.ReadResponseBodyAsAsync <Organization>());
        }