View Javadoc
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 }