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 package com.jcabi.github; 31 32 import com.jcabi.github.OAuthScope.Scope; 33 import org.hamcrest.MatcherAssert; 34 import org.hamcrest.Matchers; 35 import org.junit.AfterClass; 36 import org.junit.BeforeClass; 37 import org.junit.Test; 38 39 /** 40 * Test case for {@link RtBlobs}. 41 * @author Alexander Lukashevich (sanai56967@gmail.com) 42 * @version $Id: cb03a602d985f12e2644d2bdd2654b63b943fbcb $ 43 * @checkstyle MultipleStringLiteralsCheck (100 lines) 44 */ 45 @OAuthScope(Scope.REPO) 46 public final class RtBlobsITCase { 47 48 /** 49 * Test repos. 50 */ 51 private static Repos repos; 52 53 /** 54 * Test repo. 55 */ 56 private static Repo repo; 57 58 /** 59 * RepoRule. 60 * @checkstyle VisibilityModifierCheck (3 lines) 61 */ 62 private static RepoRule rule = new RepoRule(); 63 64 /** 65 * Set up test fixtures. 66 * @throws Exception If some errors occurred. 67 */ 68 @BeforeClass 69 public static void setUp() throws Exception { 70 final Github github = new GithubIT().connect(); 71 repos = github.repos(); 72 repo = rule.repo(repos); 73 } 74 75 /** 76 * Tear down test fixtures. 77 * @throws Exception If some errors occurred. 78 */ 79 @AfterClass 80 public static void tearDown() throws Exception { 81 if (repos != null && repo != null) { 82 repos.remove(repo.coordinates()); 83 } 84 } 85 86 /** 87 * RtBlobs can create a blob. 88 * @throws Exception If something goes wrong 89 */ 90 @Test 91 public void createsBlob() throws Exception { 92 final Blobs blobs = repo.git().blobs(); 93 final Blob blob = blobs.create( 94 "Test Content", "utf-8" 95 ); 96 MatcherAssert.assertThat( 97 blob.sha(), 98 Matchers.equalTo(blob.json().getString("sha")) 99 ); 100 } 101 102 /** 103 * RtBlobs can get a blob. 104 * @throws Exception If something goes wrong 105 */ 106 @Test 107 public void getsBlob() throws Exception { 108 final Blobs blobs = repo.git().blobs(); 109 final String content = "Content of the blob"; 110 final String encoding = "base64"; 111 final Blob blob = blobs.create( 112 content, encoding 113 ); 114 MatcherAssert.assertThat( 115 blobs.get(blob.sha()).json().getString("sha"), 116 Matchers.equalTo(blob.sha()) 117 ); 118 MatcherAssert.assertThat( 119 blobs.get(blob.sha()).json().getString("encoding"), 120 Matchers.equalTo(encoding) 121 ); 122 } 123 }