Example #1
0
        public void FileSystem_sees_Git_repo_with_head_and_branches_subfolder()
        {
            _commandRegister.UnregisterAll();
            var w = new WorldMock();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, _keyStore, new SimpleServiceContainer()))
            {
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                fs.EnsureGitFolder(TestHelper.Monitor, proto);
                CheckRootContent(fs.GetDirectoryContents("TestGitRepository"));
                CheckRootContent(fs.GetDirectoryContents("/TestGitRepository"));
                CheckRootContent(fs.GetDirectoryContents("TestGitRepository/"));
                CheckRootContent(fs.GetDirectoryContents("/TestGitRepository/"));
                CheckRootContent(fs.GetDirectoryContents("\\TestGitRepository"));
                CheckRootContent(fs.GetDirectoryContents("TestGitRepository\\"));
                CheckRootContent(fs.GetDirectoryContents("\\TestGitRepository\\"));

                void CheckRootContent(IDirectoryContents c)
                {
                    c.Exists.Should().BeTrue();
                    c.Select(f => $"{f.Name} - {f.IsDirectory}")
                    .Should().Contain(new[] { "head - True", "branches - True", "remotes - True" });
                }
            }
        }
Example #2
0
        public void FileSystem_remotes_contains_the_remote_branches()
        {
            _commandRegister.UnregisterAll();
            var            w        = new WorldMock();
            SecretKeyStore keyStore = new SecretKeyStore();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, keyStore, new SimpleServiceContainer()))
            {
                fs.ServiceContainer.Add(keyStore);
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                fs.EnsureGitFolder(TestHelper.Monitor, proto);

                var f = fs.GetFileInfo("TestGitRepository/remotes/");
                f.IsDirectory.Should().BeTrue();
                f.Name.Should().Be("remotes");
                f.PhysicalPath.Should().BeNull();

                var c = fs.GetDirectoryContents("/TestGitRepository/remotes");
                c.Exists.Should().BeTrue();
                c.Should().OnlyContain(d => d.IsDirectory);
                c.Select(d => d.Name)
                .Should().Contain(new[] { "origin" });

                var fO = fs.GetFileInfo("/TestGitRepository/remotes/" + c.Single().Name);
                fO.IsDirectory.Should().BeTrue();
                fO.Name.Should().Be(c.Single().Name);
                fO.PhysicalPath.Should().BeNull();

                var cO = fs.GetDirectoryContents("/TestGitRepository/remotes/" + c.Single().Name);
                cO.Exists.Should().BeTrue();
                cO.Should().OnlyContain(d => d.IsDirectory);
                cO.Select(d => d.Name)
                .Should().Contain(new[] { "master" });
            }
        }
Example #3
0
        public void FileSystem_sees_Git_repo_with_a_null_PhysicalPath()
        {
            _commandRegister.UnregisterAll();
            var w = new WorldMock();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, _keyStore, new SimpleServiceContainer()))
            {
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                fs.EnsureGitFolder(TestHelper.Monitor, proto).Should().NotBeNull();
                CheckRoot(fs.GetFileInfo("TestGitRepository"));
                CheckRoot(fs.GetFileInfo("/TestGitRepository"));
                CheckRoot(fs.GetFileInfo("TestGitRepository/"));
                CheckRoot(fs.GetFileInfo("/TestGitRepository/"));
                CheckRoot(fs.GetFileInfo("\\TestGitRepository"));
                CheckRoot(fs.GetFileInfo("TestGitRepository\\"));
                CheckRoot(fs.GetFileInfo("\\TestGitRepository\\"));

                void CheckRoot(IFileInfo r)
                {
                    r.IsDirectory.Should().BeTrue();
                    r.Name.Should().Be("TestGitRepository");
                    r.PhysicalPath.Should().BeNull();
                }
            }
        }
Example #4
0
        public void when_the_branch_is_the_current_one_we_have_access_to_the_physical_files()
        {
            Assume.That(TestHelper.IsExplicitAllowed);
            _commandRegister.UnregisterAll();
            var w = new WorldMock();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, _keyStore, new SimpleServiceContainer()))
            {
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                var git   = fs.EnsureGitFolder(TestHelper.Monitor, proto);
                fs.GitFolders[0].CurrentBranchName.Should().Be("master", "The TestRepository must be on 'master'.");

                var fA = fs.GetFileInfo("TestGitRepository/branches/master/a");
                fA.IsDirectory.Should().BeTrue();
                fA.Name.Should().Be("a");
                fA.PhysicalPath.Should().NotBeNull();
                new NormalizedPath(fA.PhysicalPath).Should().Be(LocalTestHelper.WorldFolder.Combine("TestGitRepository/a"));

                var fMaster = fs.GetFileInfo("TestGitRepository/branches/master/master.txt");
                fMaster.IsDirectory.Should().BeFalse();
                fMaster.Name.Should().Be("master.txt");
                fMaster.PhysicalPath.Should().NotBeNull();
                new NormalizedPath(fMaster.PhysicalPath).Should().Be(LocalTestHelper.WorldFolder.Combine("TestGitRepository/master.txt"));
                using (var content = fMaster.CreateReadStream())
                    using (var textR = new StreamReader(content))
                    {
                        textR.ReadToEnd().NormalizeEOLToLF().Should().Be("On master\nOn master\n");
                    }
            }
        }
Example #5
0
    public void WorldMapRemoveUnknownPlayerTest()
    {
        var minecraftUser = new MinecraftUserMock(Guid.NewGuid());
        var worldMock     = new WorldMock();
        var player        = PlayerEntityGenerator.GeneratePlayer(minecraftUser, worldMock);
        var map           = new WorldMap(_mapName, _serviceProvider);

        Assert.Throws <InvalidOperationException>(() => map.RemovePlayer(player));
    }
Example #6
0
    public void WorldMapGetPlayerTest()
    {
        var minecraftUser = new MinecraftUserMock(Guid.NewGuid());
        var worldMock     = new WorldMock();
        var player        = PlayerEntityGenerator.GeneratePlayer(minecraftUser, worldMock);
        var map           = new WorldMap(_mapName, _serviceProvider);

        map.AddPlayer(player);
        var existingPlayer = map.GetPlayer(player.Id);

        Assert.NotNull(existingPlayer);
        Assert.Same(player, existingPlayer);
    }
Example #7
0
    public void WorldMapAddExistingPlayerTest()
    {
        var minecraftUser = new MinecraftUserMock(Guid.NewGuid());
        var worldMock     = new WorldMock();
        var player        = PlayerEntityGenerator.GeneratePlayer(minecraftUser, worldMock);
        var map           = new WorldMap(_mapName, _serviceProvider);

        map.AddPlayer(player);

        Assert.NotEmpty(map.Players);
        Assert.Single(map.Players);
        Assert.Throws <InvalidOperationException>(() => map.AddPlayer(player));
    }
Example #8
0
    public void WorldMapAddPlayerTest()
    {
        var minecraftUser = new MinecraftUserMock(Guid.NewGuid());
        var worldMock     = new WorldMock();
        var player        = PlayerEntityGenerator.GeneratePlayer(minecraftUser, worldMock);
        var map           = new WorldMap(_mapName, _serviceProvider);

        map.AddPlayer(player);

        Assert.NotEmpty(map.Players);
        Assert.Single(map.Players);
        Assert.Same(map, player.Map);
    }
Example #9
0
    public void WorldMapRemovePlayerTest()
    {
        var minecraftUser = new MinecraftUserMock(Guid.NewGuid());
        var worldMock     = new WorldMock();
        var player        = PlayerEntityGenerator.GeneratePlayer(minecraftUser, worldMock);
        var map           = new WorldMap(_mapName, _serviceProvider);

        map.AddPlayer(player);
        var removedPlayer = map.RemovePlayer(player);

        Assert.NotNull(removedPlayer);
        Assert.Same(player, removedPlayer);
        Assert.Empty(map.Players);
    }
Example #10
0
        public void once_in_a_branch_we_have_access_to_directory_content_in_read_only_or_writable_if_in_current_head()
        {
            _commandRegister.UnregisterAll();
            var w = new WorldMock();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, _keyStore, new SimpleServiceContainer()))
            {
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                var git   = fs.EnsureGitFolder(TestHelper.Monitor, proto);
                fs.GitFolders[0].Checkout(TestHelper.Monitor, "alpha").Success.Should().BeTrue("Go to 'alpha' branch.");;

                var cA = fs.GetDirectoryContents("TestGitRepository/branches/master/a");
                cA.Exists.Should().BeTrue();
                cA.All(f => f.Exists).Should().BeTrue();
                cA.Select(f => f.Name).Should().BeEquivalentTo("a1", "a1.txt", "a2.txt");

                {
                    var fA2 = fs.GetFileInfo("TestGitRepository/branches/master/a/a2.txt");
                    fA2.IsDirectory.Should().BeFalse();
                    fA2.Name.Should().Be("a2.txt");
                    fA2.PhysicalPath.Should().BeNull();
                    using (var content = fA2.CreateReadStream())
                        using (var textR = new StreamReader(content))
                        {
                            textR.ReadToEnd().NormalizeEOLToLF().Should().Be("a2\na2\n");
                        }
                }

                fs.GitFolders[0].Checkout(TestHelper.Monitor, "master").Success.Should().BeTrue("Back to master.");

                var cAW = fs.GetDirectoryContents("TestGitRepository/branches/master/a");
                cAW.Exists.Should().BeTrue();
                cAW.All(f => f.Exists).Should().BeTrue();
                cAW.Select(f => f.Name).Should().BeEquivalentTo("a1", "a1.txt", "a2.txt");

                {
                    var fA2 = fs.GetFileInfo("TestGitRepository/branches/master/a/a2.txt");
                    fA2.IsDirectory.Should().BeFalse();
                    fA2.Name.Should().Be("a2.txt");
                    fA2.PhysicalPath.Should().NotBeNull("Since we have checked out master.");
                    using (var content = fA2.CreateReadStream())
                        using (var textR = new StreamReader(content))
                        {
                            textR.ReadToEnd().NormalizeEOLToLF().Should().Be("a2\na2\n");
                        }
                }
            }
        }
Example #11
0
    public async Task WorldMapDisposeTest()
    {
        var minecraftUser = new MinecraftUserMock(Guid.NewGuid());
        var worldMock     = new WorldMock();
        var player        = PlayerEntityGenerator.GeneratePlayer(minecraftUser, worldMock);
        var map           = new WorldMap(_mapName, _serviceProvider);

        map.AddRegion(0, 0);
        map.AddPlayer(player);
        map.StartUpdate();

        await Task.Delay(500);

        map.Dispose();
        Assert.False(map.IsUpdating);
        Assert.Empty(map.Regions);
        Assert.Empty(map.Players);
    }
Example #12
0
        public void FileSystem_sees_Git_head_as_the_PhysicalDirectory()
        {
            _commandRegister.UnregisterAll();
            var w = new WorldMock();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, _keyStore, new SimpleServiceContainer()))
            {
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                fs.EnsureGitFolder(TestHelper.Monitor, proto);
                CheckHead(fs.GetFileInfo("TestGitRepository/head"));
                CheckHead(fs.GetFileInfo("/TestGitRepository/head"));
                CheckHead(fs.GetFileInfo("TestGitRepository/head/"));
                CheckHead(fs.GetFileInfo("/TestGitRepository/head/"));
                CheckHead(fs.GetFileInfo("\\TestGitRepository\\head"));
                CheckHead(fs.GetFileInfo("TestGitRepository\\head\\"));
                CheckHead(fs.GetFileInfo("\\TestGitRepository\\head\\"));

                void CheckHead(IFileInfo r)
                {
                    r.IsDirectory.Should().BeTrue();
                    r.Name.Should().Be("head");
                    r.PhysicalPath.Should().Be(LocalTestHelper.WorldFolder.AppendPart("TestGitRepository"));
                }

                CheckHeadContent(fs.GetDirectoryContents("TestGitRepository/head"));
                CheckHeadContent(fs.GetDirectoryContents("/TestGitRepository/head"));
                CheckHeadContent(fs.GetDirectoryContents("TestGitRepository/head/"));
                CheckHeadContent(fs.GetDirectoryContents("/TestGitRepository/head/"));
                CheckHeadContent(fs.GetDirectoryContents("\\TestGitRepository\\head"));
                CheckHeadContent(fs.GetDirectoryContents("TestGitRepository\\head\\"));
                CheckHeadContent(fs.GetDirectoryContents("\\TestGitRepository\\head\\"));

                void CheckHeadContent(IDirectoryContents c)
                {
                    c.Exists.Should().BeTrue();
                    c.Select(f => $"{f.Name} - {f.IsDirectory}")
                    .Should().Contain("a - True")
                    .And.Contain("b - True")
                    .And.Contain("c - True")
                    .And.Contain("master.txt - False");
                }
            }
        }
Example #13
0
        public void FileSystem_sees_the_branches_as_directories()
        {
            _commandRegister.UnregisterAll();
            var w = new WorldMock();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, _keyStore, new SimpleServiceContainer()))
            {
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                fs.EnsureGitFolder(TestHelper.Monitor, proto);
                var f = fs.GetFileInfo("TestGitRepository/branches");
                f.IsDirectory.Should().BeTrue();
                f.Name.Should().Be("branches");
                f.PhysicalPath.Should().BeNull();

                var c = fs.GetDirectoryContents("/TestGitRepository/branches/");
                c.Exists.Should().BeTrue();
                c.Should().OnlyContain(d => d.IsDirectory);
                c.Select(d => d.Name)
                .Should().Contain("master");
            }
        }
Example #14
0
        public void GitFolder_CheckCleanCommit_detects_new_deleted_and_modified_files()
        {
            Assume.That(TestHelper.IsExplicitAllowed);
            _commandRegister.UnregisterAll();
            var w = new WorldMock();

            using (var fs = new FileSystem(LocalTestHelper.WorldFolder, _commandRegister, _keyStore, new SimpleServiceContainer()))
            {
                var proto = fs.FindOrCreateProtoGitFolder(TestHelper.Monitor, w, "TestGitRepository", LocalTestHelper.TestGitRepositoryUrl);
                var git   = fs.EnsureGitFolder(TestHelper.Monitor, proto);
                git.CheckCleanCommit(TestHelper.Monitor).Should().BeTrue();
                git.CurrentBranchName.Should().Be("master");

                var gitRoot = git.SubPath.AppendPart("branches").AppendPart("master");

                // Detecting New file.
                fs.CopyTo(TestHelper.Monitor, "newFile", gitRoot.AppendPart("new.txt"));
                git.CheckCleanCommit(TestHelper.Monitor).Should().BeFalse();
                // Restoring
                fs.Delete(TestHelper.Monitor, gitRoot.AppendPart("new.txt"));
                git.CheckCleanCommit(TestHelper.Monitor).Should().BeTrue();

                var savedMasterContent = fs.GetFileInfo(gitRoot.AppendPart("master.txt")).AsTextFileInfo().TextContent;
                // Detecting Deleted file.
                fs.Delete(TestHelper.Monitor, gitRoot.AppendPart("master.txt"));
                git.CheckCleanCommit(TestHelper.Monitor).Should().BeFalse();
                // Restoring
                fs.CopyTo(TestHelper.Monitor, savedMasterContent, gitRoot.AppendPart("master.txt"));
                git.CheckCleanCommit(TestHelper.Monitor).Should().BeTrue();

                // Detecting Modified file.
                fs.CopyTo(TestHelper.Monitor, "paf!", gitRoot.AppendPart("master.txt"));
                git.CheckCleanCommit(TestHelper.Monitor).Should().BeFalse();
                // Restoring
                fs.CopyTo(TestHelper.Monitor, savedMasterContent, gitRoot.AppendPart("master.txt"));
                git.CheckCleanCommit(TestHelper.Monitor).Should().BeTrue();
            }
        }
Example #15
0
 public void Initialize()
 {
     _world = new WorldMock();
     _log   = new LogMock();
     Log.SetLogger(_log);
 }