Ejemplo n.º 1
0
        public void When_Passing_No_Subject_Then_Exception_Is_Thrown()
        {
            // ARRANGE
            InitializeFakeObjects();
            var addProfileParameter = new AddProfileParameter();

            // ACT & ASSERT
            Assert.Throws <ArgumentNullException>(() => _addProfileAction.Execute(addProfileParameter));
        }
Ejemplo n.º 2
0
        public void When_Profile_Already_Exists_Then_Exception_Is_Thrown()
        {
            // ARRANGE
            InitializeFakeObjects();
            var addProfileParameter = new AddProfileParameter
            {
                Subject = "subject",
                Name    = "name"
            };
            var profile = new Profile();

            _profileRepositoryStub.Setup(p => p.GetProfileBySubject(It.IsAny <string>()))
            .Returns(profile);

            // ACT & ASSERT
            var exception = Assert.Throws <IdentityServerException>(() => _addProfileAction.Execute(addProfileParameter));

            Assert.True(exception.Code == ErrorCodes.InvalidRequestCode);
            Assert.True(exception.Message == ErrorDescriptions.TheProfileAlreadyExists);
        }
Ejemplo n.º 3
0
        public void When_Adding_Profile_Then_Operation_Is_Called()
        {
            // ARRANGE
            InitializeFakeObjects();
            var addProfileParameter = new AddProfileParameter
            {
                Subject = "subject",
                Name    = "name"
            };

            _profileRepositoryStub.Setup(p => p.AddProfile(It.IsAny <Profile>()))
            .Returns(true);

            // ACT
            var result = _addProfileAction.Execute(addProfileParameter);

            // ASSERTS
            Assert.NotNull(result);
            _profileRepositoryStub.Verify(p => p.AddProfile(It.IsAny <Profile>()));
        }
 public async Task <Profile> AddProfile(
     AddProfileParameter addProfileParameter,
     string domainName)
 {
     return(await _addProfileAction.ExecuteAsync(addProfileParameter, domainName));
 }
Ejemplo n.º 5
0
        public async Task <Profile> ExecuteAsync(
            AddProfileParameter addProfileParameter,
            string domainName)
        {
            if (addProfileParameter == null)
            {
                throw new ArgumentNullException(nameof(addProfileParameter));
            }

            if (string.IsNullOrWhiteSpace(domainName))
            {
                throw new ArgumentNullException(nameof(domainName));
            }

            if (string.IsNullOrWhiteSpace(addProfileParameter.Subject))
            {
                throw new ArgumentNullException(nameof(addProfileParameter.Subject));
            }

            if (string.IsNullOrWhiteSpace(addProfileParameter.Name))
            {
                throw new ArgumentNullException(nameof(addProfileParameter.Name));
            }

            var isExistingProfile = _profileRepository.GetProfileBySubject(addProfileParameter.Subject) != null ||
                                    _profileRepository.GetProfileByName(addProfileParameter.Name) != null;

            if (isExistingProfile)
            {
                throw new IdentityServerException(ErrorCodes.InvalidRequestCode,
                                                  ErrorDescriptions.TheProfileAlreadyExists);
            }

            var newProfile = new Profile
            {
                Subject  = addProfileParameter.Subject,
                Name     = addProfileParameter.Name,
                IsActive = true,
                AuthorizationServerUrl = _endPointConfiguration.GetAuthorizationServer(addProfileParameter.Name),
                ManagerWebSiteApiUrl   = _endPointConfiguration.GetManagerWebSiteApi(addProfileParameter.Name),
                ManagerWebSiteUrl      = _endPointConfiguration.GetManagerWebSite(addProfileParameter.Name)
            };

            var isProfileAdded = _profileRepository.AddProfile(newProfile);

            if (!isProfileAdded)
            {
                return(null);
            }

            var dockerClient  = _dockerClientFactory.GetDockerClient();
            var containerName = newProfile.Name;
            await dockerClient.Containers.CreateContainerAsync(new CreateContainerParameters
            {
                ContainerName = newProfile.Name,
                Config        = new Config
                {
                    Env = new List <string>
                    {
                        string.Format("VIRTUAL_HOST={0}.{1}", containerName, domainName)
                    },
                    Image = ImageName
                }
            });

            return(newProfile);
        }