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 }