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.http.request.FakeRequest;
33 import org.hamcrest.MatcherAssert;
34 import org.hamcrest.Matchers;
35 import org.junit.Test;
36 import org.mockito.Mockito;
37
38 /**
39 * Test case for {@link RtPublicKey}.
40 *
41 * @author Carlos Miranda (miranda.cma@gmail.com)
42 * @version $Id: 094007c0280f720eec009b7e24bab48e0a8cd83d $
43 */
44 public final class RtPublicKeyTest {
45
46 /**
47 * RtPublicKey can be described as a JSON object.
48 *
49 * @throws Exception if a problem occurs.
50 */
51 @Test
52 public void canRepresentAsJson() throws Exception {
53 final RtPublicKey key = new RtPublicKey(
54 new FakeRequest().withBody("{}"),
55 Mockito.mock(User.class),
56 1
57 );
58 MatcherAssert.assertThat(
59 key.json(),
60 Matchers.notNullValue()
61 );
62 }
63
64 /**
65 * RtPublicKey can obtain its own user.
66 *
67 */
68 @Test
69 public void canObtainUser() {
70 final User user = Mockito.mock(User.class);
71 final RtPublicKey key = new RtPublicKey(new FakeRequest(), user, 2);
72 MatcherAssert.assertThat(
73 key.user(),
74 Matchers.sameInstance(user)
75 );
76 }
77
78 /**
79 * RtPublicKey can obtain its own number.
80 *
81 */
82 @Test
83 public void canObtainNumber() {
84 final int number = 39;
85 final RtPublicKey key = new RtPublicKey(
86 new FakeRequest(),
87 Mockito.mock(User.class),
88 number
89 );
90 MatcherAssert.assertThat(
91 key.number(),
92 Matchers.equalTo(number)
93 );
94 }
95
96 }