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.Assume;
36 import org.junit.Test;
37
38 /**
39 * Integration case for {@link Github}.
40 * @author Yegor Bugayenko (yegor256@gmail.com)
41 * @version $Id: 3edb1b71274ce62c7cc32303c4817d7f11e4bb58 $
42 * @checkstyle ClassDataAbstractionCoupling (500 lines)
43 */
44 @OAuthScope(Scope.REPO)
45 public final class RtGithubITCase {
46
47 /**
48 * RtGithub can authenticate itself.
49 */
50 @Test
51 public void authenticatesItself() {
52 final Github github = new GithubIT().connect();
53 MatcherAssert.assertThat(
54 github.users().self(),
55 Matchers.notNullValue()
56 );
57 }
58
59 /**
60 * RtGithub can connect anonymously.
61 * @throws Exception If some problem inside
62 */
63 @Test
64 public void connectsAnonymously() throws Exception {
65 final Github github = new RtGithub();
66 MatcherAssert.assertThat(
67 new Issue.Smart(
68 github.repos().get(
69 new Coordinates.Simple("jcabi/jcabi-github")
70 ).issues().get(1)
71 ).title(),
72 Matchers.notNullValue()
73 );
74 }
75
76 /**
77 * RtGithub can fetch meta information.
78 * @throws Exception If some problem inside
79 */
80 @Test
81 public void fetchesMeta() throws Exception {
82 final Github github = new RtGithub();
83 MatcherAssert.assertThat(
84 github.meta().getJsonArray("hooks"),
85 Matchers.not(Matchers.empty())
86 );
87 }
88
89 /**
90 * RtGithub can fetch emojis.
91 * @throws Exception If some problem inside
92 */
93 @Test
94 public void fetchesEmojis() throws Exception {
95 final Github github = new RtGithub();
96 MatcherAssert.assertThat(
97 github.emojis().getString("+1"),
98 Matchers.startsWith("https://")
99 );
100 }
101
102 /**
103 * RtGithub can authenticate with username and password through HTTP Basic.
104 * @throws Exception If some problem inside
105 */
106 @Test
107 public void authenticatesWithUsernameAndPassword() throws Exception {
108 final String user = System.getProperty("failsafe.github.user");
109 final String password = System.getProperty("failsafe.github.password");
110 Assume.assumeThat(
111 user,
112 Matchers.not(Matchers.is(Matchers.emptyOrNullString()))
113 );
114 Assume.assumeThat(
115 password,
116 Matchers.not(Matchers.is(Matchers.emptyOrNullString()))
117 );
118 final Github github = new RtGithub(user, password);
119 MatcherAssert.assertThat(
120 new User.Smart(github.users().self()).login(),
121 Matchers.is(user)
122 );
123 }
124
125 /**
126 * RtGithub can fetch users.
127 */
128 @Test
129 public void fetchesUsers() {
130 final Github github = new GithubIT().connect();
131 MatcherAssert.assertThat(
132 "Iterating over github.users() should return something",
133 github.users().iterate("").iterator().next(),
134 Matchers.anything()
135 );
136 }
137
138 }