1 /** 2 * Copyright (c) 2013-2023, jcabi.com 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 1) Redistributions of source code must retain the above 8 * copyright notice, this list of conditions and the following 9 * disclaimer. 2) Redistributions in binary form must reproduce the above 10 * copyright notice, this list of conditions and the following 11 * disclaimer in the documentation and/or other materials provided 12 * with the distribution. 3) Neither the name of the jcabi.com nor 13 * the names of its contributors may be used to endorse or promote 14 * products derived from this software without specific prior written 15 * permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT 19 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 21 * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 28 * OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 package com.jcabi.github.mock; 32 33 import com.jcabi.github.Repo; 34 import javax.json.Json; 35 import javax.json.JsonObject; 36 import org.hamcrest.MatcherAssert; 37 import org.hamcrest.Matchers; 38 import org.junit.Test; 39 40 /** 41 * Testcase for MkTrees. 42 * @author Alexander Lukashevich (sanai56967@gmail.com) 43 * @version $Id: 8391f252836ce61b32943a8a0504d73ec13243b0 $ 44 * @checkstyle MultipleStringLiterals (500 lines) 45 */ 46 @SuppressWarnings("PMD.AvoidDuplicateLiterals") 47 public final class MkTreesTest { 48 49 /** 50 * MkTrees can create trees. 51 * @throws Exception If something goes wrong. 52 */ 53 @Test 54 public void createsMkTree() throws Exception { 55 final JsonObject tree = Json.createObjectBuilder() 56 .add("base_tree", "base_tree_sha") 57 .add( 58 "tree", 59 Json.createArrayBuilder().add( 60 Json.createObjectBuilder() 61 .add("path", "dir/File.java") 62 .add("mode", "100644") 63 .add("type", "blob") 64 .add("sha", "sha-test") 65 ) 66 ).build(); 67 MatcherAssert.assertThat( 68 new MkGithub().randomRepo().git().trees().create(tree), 69 Matchers.notNullValue() 70 ); 71 } 72 73 /** 74 * MkTrees can get tree recursively. 75 * 76 * @throws Exception if some problem inside 77 */ 78 @Test 79 public void getTreeRec() throws Exception { 80 final String sha = "0abcd89jcabitest"; 81 final JsonObject json = Json.createObjectBuilder().add( 82 "tree", 83 Json.createArrayBuilder().add( 84 Json.createObjectBuilder() 85 .add("path", "test.txt") 86 .add("mode", "100644") 87 .add("sha", sha).add("name", "tree rec") 88 .add("type", "blob") 89 .add("content", "hello") 90 .build() 91 ).build() 92 ).build(); 93 final Repo repo = new MkGithub().randomRepo(); 94 repo.git().trees().create(json); 95 MatcherAssert.assertThat( 96 repo.git().trees().getRec(sha).json().getString("sha"), 97 Matchers.containsString(sha) 98 ); 99 } 100 }