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 }