Esempio n. 1
0
        public async Task Create_Branch_Exception()
        {
            var InputOwner      = "foo";
            var InputRepo       = "bar";
            var InputBranchName = "baz";
            var InputSha        = "qux";
            var ExpectedURL     = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/git/refs";
            var branchRef       = new BranchRef()
            {
                Ref = $"refs/heads/{InputBranchName}",
                sha = InputSha
            };
            var ExpectedJson = JsonConvert.SerializeObject(branchRef);

            var fixture = new GitHubFixture();

            fixture.SetupCreateBranchWithFailure(ExpectedURL, ExpectedJson);
            var repository = new GitHubRepository(fixture.GitHubContext);

            var ex = await Assert.ThrowsAsync <RestAPICallException>(async() =>
                                                                     await repository.CreateBranchAsync(InputOwner, InputRepo, InputBranchName, InputSha)
                                                                     );

            Assert.Equal("InternalServerError", ex.StatusCode);
            Assert.Equal("Internal Server Error", ex.Message);
            Assert.Equal(ExpectedURL, ex.RequestMessage.RequestUri.ToString());
        }
Esempio n. 2
0
        public async Task Update_File_Normal_Case()
        {
            var ExpectedCommitName  = "Tsuyoshi Ushio";
            var ExpectedCommitEmail = "*****@*****.**";

            using (var session = new CommitSession(ExpectedCommitName, ExpectedCommitEmail))
            {
                var InputPath            = "foo";
                var InputText            = "konnichiwa.";
                var ExpectedTargetBranch = "foo-ja";
                var ExpectedSha          = "quux";
                var InputLanguage        = "ja";
                var fixture = new GitHubFixture();
                fixture.SetupUpdateFileContents(fixture.InputOwner, fixture.InputRepo, InputPath);
                // public async Task UpdateFileContentsAsync(string owner, string repo, string path, string branch, string text, string sha, string language)
                var service = new GitHubService(fixture.GitHubRepository);
                await service.UpdateFileContentsAsync(fixture.InputOwner, fixture.InputRepo, InputPath,
                                                      ExpectedTargetBranch, InputText, ExpectedSha, InputLanguage);

                var operation = fixture.ActualFileOperation;
                Assert.Equal($"Generate {InputLanguage} version", operation.message);
                Assert.Equal(ExpectedCommitName, operation.commiter.name);
                Assert.Equal(ExpectedCommitEmail, operation.commiter.email);
                Assert.Equal(ExpectedTargetBranch, operation.branch);
                Assert.Equal(ExpectedSha, operation.sha);
                Assert.Equal(Convert.ToBase64String(Encoding.UTF8.GetBytes(InputText)), operation.content);
            }
        }
Esempio n. 3
0
        public async Task Update_FileContents_Normal()
        {
            var fixture = new GitHubFixture();

            fixture.SetUpSampleInputOperation();

            var ExpectedURL = $"https://api.github.com/repos/{fixture.InputOwner}/{fixture.InputRepo}/contents/{fixture.InputPath}";

            // On the Setup, I call Assert on the Callback.
            fixture.SetupUpdateFileContents(ExpectedURL, fixture.InputOperation);
            var repository = new GitHubRepository(fixture.GitHubContext);
            await repository.UpdateFileContents(fixture.InputOwner, fixture.InputRepo, fixture.InputPath,
                                                fixture.InputOperation);
        }
Esempio n. 4
0
        public void Delete_BranchAsync_NormalCase()
        {
            var InputOwner  = "foo";
            var InputRepo   = "bar";
            var InputBranch = "baz";
            var ExpectedURL = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/git/refs/heads/{InputBranch}";
            var fixture     = new GitHubFixture();

            fixture.SetUpDeleteAsync(ExpectedURL);
            var repository = new GitHubRepository(fixture.GitHubContext);
            var result     = repository.DeleteBranchAsync(InputOwner, InputRepo, InputBranch);

            fixture.VerifyDeleteAsync(ExpectedURL);
        }
Esempio n. 5
0
        public async Task Create_Branch_Normal_Case()
        {
            var fixture = new GitHubFixture();

            var ExpectedTargetBranchName = $"{fixture.InputSourceBranch}-{fixture.InputLanguage}";
            var ExpectedSha = "quux";

            fixture.SetUpCreateBranchAsync(fixture.InputOwner, fixture.InputRepo, fixture.InputSourceBranch, ExpectedTargetBranchName, ExpectedSha);
            var service = new GitHubService(fixture.GitHubRepository);
            var result  = await service.CreateBranchAsync(fixture.InputOwner, fixture.InputRepo, fixture.InputSourceBranch, fixture.InputLanguage);

            fixture.VerifyCreateBranchAsync();
            Assert.Equal(ExpectedSha, result.commit.sha);
        }
Esempio n. 6
0
        public async Task Update_FileContents_Exception()
        {
            var fixture = new GitHubFixture();

            fixture.SetUpSampleInputOperation();
            var ExpectedURL = $"https://api.github.com/repos/{fixture.InputOwner}/{fixture.InputRepo}/contents/{fixture.InputPath}";

            fixture.SetupUpdateFileContentsFailure(ExpectedURL, fixture.InputOperation);
            var repository = new GitHubRepository(fixture.GitHubContext);
            var ex         = await Assert.ThrowsAsync <RestAPICallException>(async() =>
                                                                             await repository.UpdateFileContents(fixture.InputOwner, fixture.InputRepo, fixture.InputPath,
                                                                                                                 fixture.InputOperation)
                                                                             );

            Assert.Equal("InternalServerError", ex.StatusCode);
            Assert.Equal("Internal Server Error", ex.Message);
            Assert.Equal(ExpectedURL, ex.RequestMessage.RequestUri.ToString());
        }
Esempio n. 7
0
        public async Task Search_MdFiles_Normal()
        {
            var InputOwner  = "foo";
            var InputRepo   = "bar";
            var InputSha    = "baz";
            var ExpectedURL = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/git/trees/{InputSha}?recursive=1";

            var fixture = new GitHubFixture();
            var trees   = new Tree[]
            {
                new Tree()
                {
                    path = "abc.txt"
                },
                new Tree()
                {
                    path = "bcd.md"
                },
                new Tree()
                {
                    path = "cde.md"
                },
                new Tree()
                {
                    path = "def.lock"
                }
            };
            var searchResult = new SearchResult();

            searchResult.tree = trees;
            var treeJson = JsonConvert.SerializeObject(searchResult);

            fixture.SetupSearchMd(ExpectedURL, treeJson);
            var repository = new GitHubRepository(fixture.GitHubContext);
            var result     = await repository.SearchMdFilesAsync(InputOwner, InputRepo, InputSha);

            Assert.Equal(2, result.Count());
            var enumerator = result.GetEnumerator();

            enumerator.MoveNext();
            Assert.Equal("bcd.md", enumerator.Current.path);
            enumerator.MoveNext();
            Assert.Equal("cde.md", enumerator.Current.path);
        }
Esempio n. 8
0
        public async Task Get_Branch_Exception()
        {
            var InputOwner  = "foo";
            var InputRepo   = "bar";
            var InputBranch = "baz";

            var ExpectedURL = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/branches/{InputBranch}";
            var ExpectedSha = "qux";
            var fixture     = new GitHubFixture();

            fixture.SetupGetBranchWithFailure(ExpectedURL);
            var repository = new GitHubRepository(fixture.GitHubContext);
            var ex         = await Assert.ThrowsAsync <RestAPICallException>(async() =>
                                                                             await repository.GetBranchAsync(InputOwner, InputRepo, InputBranch)
                                                                             );

            Assert.Equal("InternalServerError", ex.StatusCode);
            Assert.Equal("Internal Server Error", ex.Message);
            Assert.Equal(ExpectedURL, ex.RequestMessage.RequestUri.ToString());
        }
Esempio n. 9
0
        public async Task Get_FileContents_Exception_First()
        {
            var InputOwner         = "foo";
            var InputRepo          = "bar";
            var InputBranch        = "baz";
            var InputPath          = "qux.md";
            var ExpectedContentURL = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/contents/{InputPath}?ref={InputBranch}";

            var fixture = new GitHubFixture();

            fixture.SetupGetFileContentsFirstFails(ExpectedContentURL);
            var respository = new GitHubRepository(fixture.GitHubContext);
            var ex          = await Assert.ThrowsAsync <RestAPICallException>(async() =>
                                                                              await respository.GetFileContents(InputOwner, InputRepo, InputBranch, InputPath)
                                                                              );

            Assert.Equal("InternalServerError", ex.StatusCode);
            Assert.Equal("Internal Server Error", ex.Message);
            Assert.Equal(ExpectedContentURL, ex.RequestMessage.RequestUri.ToString());
        }
Esempio n. 10
0
        public async Task Search_MdFiles_Exception()
        {
            var InputOwner  = "foo";
            var InputRepo   = "bar";
            var InputSha    = "baz";
            var ExpectedURL = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/git/trees/{InputSha}?recursive=1";

            var fixture = new GitHubFixture();

            fixture.SetupSearchMdWithFailure(ExpectedURL);
            var repository = new GitHubRepository(fixture.GitHubContext);

            var ex = await Assert.ThrowsAsync <RestAPICallException>(async() =>
                                                                     await repository.SearchMdFilesAsync(InputOwner, InputRepo, InputSha)
                                                                     );

            Assert.Equal("InternalServerError", ex.StatusCode);
            Assert.Equal("Internal Server Error", ex.Message);
            Assert.Equal(ExpectedURL, ex.RequestMessage.RequestUri.ToString());
        }
Esempio n. 11
0
        public async Task Get_FileContents_Normal()
        {
            var InputOwner          = "foo";
            var InputRepo           = "bar";
            var InputBranch         = "baz";
            var InputPath           = "qux.md";
            var ExpectedContentURL  = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/contents/{InputPath}?ref={InputBranch}";
            var ExpectedDownloadURL = $"https://raw.githubusercontent.com/foo/bar/baz/qux.md";
            var ExpectedContent     = "quux";
            // Task<string> GetFileContents(string owner, string repo, string branch, string path)
            // var response = await context.GetAsync($"{RestAPIBase}/{owner}/{repo}/contents/{path}?ref={branch}");
            // var response = await context.GetAsync(downloadUrl);
            var fixture = new GitHubFixture();

            fixture.SetupGetFileContents(ExpectedContentURL, ExpectedDownloadURL, ExpectedContent);
            var respository = new GitHubRepository(fixture.GitHubContext);
            var result      = await respository.GetFileContents(InputOwner, InputRepo, InputBranch, InputPath);

            Assert.Equal(ExpectedContent, result.Item2);
            Assert.Equal(ExpectedDownloadURL, result.Item1.download_url);
        }
Esempio n. 12
0
        public async Task Create_Branch_Normal()
        {
            var InputOwner      = "foo";
            var InputRepo       = "bar";
            var InputBranchName = "baz";
            var InputSha        = "qux";
            //         public async Task CreateBranchAsync(string owner, string repo, string branchName, string sha)
            var ExpectedURL = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/git/refs";
            var branchRef   = new BranchRef()
            {
                Ref = $"refs/heads/{InputBranchName}",
                sha = InputSha
            };
            var ExpectedJson = JsonConvert.SerializeObject(branchRef);

            var fixture = new GitHubFixture();

            fixture.SetupCreateBranch(ExpectedURL, ExpectedJson);
            var repository = new GitHubRepository(fixture.GitHubContext);
            await repository.CreateBranchAsync(InputOwner, InputRepo, InputBranchName, InputSha);

            fixture.VerifyCreateBranch(ExpectedURL, ExpectedJson);
        }
Esempio n. 13
0
        public async Task Get_BranchAsync_NormalCase()
        {
            var InputOwner  = "foo";
            var InputRepo   = "bar";
            var InputBranch = "baz";

            var ExpectedURL = $"https://api.github.com/repos/{InputOwner}/{InputRepo}/branches/{InputBranch}";
            var ExpectedSha = "qux";
            var fixture     = new GitHubFixture();

            var ReturnBranch = new Branch
            {
                commit = new Commit()
                {
                    sha = ExpectedSha
                }
            };

            fixture.SetupGetBranchAsync(ExpectedURL, JsonConvert.SerializeObject(ReturnBranch));
            var repository = new GitHubRepository(fixture.GitHubContext);
            var branch     = await repository.GetBranchAsync(InputOwner, InputRepo, InputBranch);

            Assert.Equal(ExpectedSha, branch.commit.sha);
        }