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.Rule;
36 import org.junit.Test;
37
38 /**
39 * Integration case for {@link RtRepos}.
40 *
41 * @author Andrej Istomin (andrej.istomin.ikeen@gmail.com)
42 * @version $Id: 7c62c81bda61fcb68752d503b2ad6b22f16d9efe $
43 */
44 @OAuthScope({ Scope.REPO, Scope.DELETE_REPO })
45 public class RtReposITCase {
46
47 /**
48 * RepoRule.
49 * @checkstyle VisibilityModifierCheck (3 lines)
50 */
51 @Rule
52 public final transient RepoRule rule = new RepoRule();
53
54 /**
55 * RtRepos create repository test.
56 *
57 * @throws Exception If some problem inside
58 */
59 @Test
60 public final void create() throws Exception {
61 final Repos repos = new GithubIT().connect().repos();
62 final Repo repo = this.rule.repo(repos);
63 try {
64 MatcherAssert.assertThat(repo, Matchers.notNullValue());
65 } finally {
66 repos.remove(repo.coordinates());
67 }
68 }
69
70 /**
71 * RtRepos should fail on creation of two repos with the same name.
72 * @throws Exception If some problem inside
73 */
74 @Test(expected = AssertionError.class)
75 public final void failsOnCreationOfTwoRepos() throws Exception {
76 final Repos repos = new GithubIT().connect().repos();
77 final Repo repo = this.rule.repo(repos);
78 try {
79 repos.create(
80 new Repos.RepoCreate(repo.coordinates().repo(), false)
81 );
82 } finally {
83 repos.remove(repo.coordinates());
84 }
85 }
86
87 /**
88 * RtRepos exists repository test.
89 *
90 * @throws Exception If some problem inside
91 */
92 @Test
93 public final void exists() throws Exception {
94 final Repos repos = new GithubIT().connect().repos();
95 final Repo repo = this.rule.repo(repos);
96 try {
97 MatcherAssert.assertThat(
98 repos.exists(repo.coordinates()),
99 Matchers.equalTo(true)
100 );
101 } finally {
102 repos.remove(repo.coordinates());
103 }
104 }
105
106 /**
107 * RtRepos create repository test.
108 *
109 * @throws Exception If some problem inside
110 */
111 @Test
112 public final void createWithOrganization() throws Exception {
113 final Repos repos = new GithubIT().connect().repos();
114 final Repo repo = repos.create(
115 new Repos.RepoCreate("test", false).withOrganization("myorg")
116 );
117 try {
118 MatcherAssert.assertThat(
119 repo.coordinates(),
120 Matchers.hasToString("/orgs/myorg/repos/test")
121 );
122 } finally {
123 repos.remove(repo.coordinates());
124 }
125 }
126
127 }