public void AzureReposBindingManager_GetBinding_LocalAndGlobalUsers_ReturnsBinding()
        {
            const string orgUserLocal  = "john.doe";
            const string orgUserGlobal = "jane.doe";
            const string orgName       = "org";
            string       orgKey        = CreateKey(orgName);

            var git = new TestGit
            {
                Configuration =
                {
                    Global = { [orgKey] = new[] { orgUserGlobal } },
                    Local  = { [orgKey] = new[] { orgUserLocal  } }
                }
            };

            var trace   = new NullTrace();
            var manager = new AzureReposBindingManager(trace, git);

            AzureReposBinding binding = manager.GetBinding(orgName);

            Assert.Equal(orgName, binding.Organization);
            Assert.Equal(orgUserGlobal, binding.GlobalUserName);
            Assert.Equal(orgUserLocal, binding.LocalUserName);
        }
        public void AzureReposBindingManager_GetBinding_Null_ThrowException()
        {
            var git     = new TestGit();
            var trace   = new NullTrace();
            var manager = new AzureReposBindingManager(trace, git);

            Assert.Throws <ArgumentNullException>(() => manager.GetBinding(null));
        }
        public void AzureReposBindingManager_Bind_NullOrganization_ThrowException()
        {
            var trace   = new NullTrace();
            var git     = new TestGit();
            var manager = new AzureReposBindingManager(trace, git);

            Assert.Throws <ArgumentNullException>(() => manager.Bind(null, "user", false));
        }
        public void AzureReposBindingManager_GetBindings_NoUsers_ReturnsEmpty()
        {
            var git     = new TestGit();
            var trace   = new NullTrace();
            var manager = new AzureReposBindingManager(trace, git);

            IList <AzureReposBinding> actual = manager.GetBindings().ToList();

            Assert.Empty(actual);
        }
        public void AzureReposBindingManager_GetBinding_NoUser_ReturnsNull()
        {
            const string orgName = "org";

            var trace   = new NullTrace();
            var git     = new TestGit();
            var manager = new AzureReposBindingManager(trace, git);

            AzureReposBinding binding = manager.GetBinding(orgName);

            Assert.Null(binding);
        }
        public void AzureReposBindingManager_UnbindLocal_NoUser_DoesNothing()
        {
            const string orgName = "org";

            var trace   = new NullTrace();
            var git     = new TestGit();
            var manager = new AzureReposBindingManager(trace, git);

            manager.Unbind(orgName, true);

            Assert.Empty(git.Configuration.Local);
        }
        public void AzureReposBindingManager_GetBindings_Users_ReturnsUsers()
        {
            const string org1 = "org1";
            const string org2 = "org2";

            var git     = new TestGit();
            var trace   = new NullTrace();
            var manager = new AzureReposBindingManager(trace, git);

            git.Configuration.Global[CreateKey(org1)] = new[] { "user1" };
            git.Configuration.Global[CreateKey(org2)] = new[] { "user2" };

            AzureReposBinding[] bindings = manager.GetBindings().ToArray();
        public void AzureReposBindingManager_UnbindLocal_ExistingUser_RemovesKey()
        {
            const string orgName = "org";

            var trace   = new NullTrace();
            var git     = new TestGit();
            var manager = new AzureReposBindingManager(trace, git);

            git.Configuration.Local[CreateKey(orgName)] = new[] { "org-user" };

            manager.Unbind(orgName, true);

            Assert.Empty(git.Configuration.Local);
        }
        public void AzureReposBindingManager_BindLocal_NoUser_SetsOrgKey()
        {
            const string expectedUser = "******";
            const string orgName      = "org";

            var trace   = new NullTrace();
            var git     = new TestGit();
            var manager = new AzureReposBindingManager(trace, git);

            manager.Bind(orgName, expectedUser, true);

            Assert.True(git.Configuration.Local.TryGetValue(CreateKey(orgName), out var users));
            Assert.Single(users);
            string actualUser = users[0];

            Assert.Equal(expectedUser, actualUser);
        }