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.mock; 31 32 import com.jcabi.github.PublicKey; 33 import com.jcabi.github.PublicKeys; 34 import org.hamcrest.MatcherAssert; 35 import org.hamcrest.Matchers; 36 import org.junit.Test; 37 38 /** 39 * Test case for {@link MkPublicKeys}. 40 * 41 * @author Carlos Miranda (miranda.cma@gmail.com) 42 * @version $Id: e76e39e6d947e2f7c6074b452ba8b5297b7e6606 $ 43 */ 44 public final class MkPublicKeysTest { 45 46 /** 47 * MkPublicKeys should be able to iterate its keys. 48 * 49 * @throws Exception if a problem occurs. 50 */ 51 @Test 52 public void retrievesKeys() throws Exception { 53 final PublicKeys keys = new MkGithub().users().self().keys(); 54 final PublicKey key = keys.create("key", "ssh 1AA"); 55 MatcherAssert.assertThat( 56 keys.iterate(), 57 Matchers.hasItem(key) 58 ); 59 } 60 61 /** 62 * MkPublicKeys should be able to retrieve a single key. 63 * 64 * @throws Exception if a problem occurs. 65 */ 66 @Test 67 public void canFetchSingleKey() throws Exception { 68 final PublicKeys keys = new MkGithub().users().add("jeff").keys(); 69 MatcherAssert.assertThat( 70 keys.get(1), 71 Matchers.notNullValue() 72 ); 73 } 74 75 /** 76 * MkPublicKeys should be able to create a public key. 77 * 78 * @throws Exception if a problem occurs. 79 */ 80 @Test 81 public void canCreatePublicKey() throws Exception { 82 final PublicKeys keys = new MkGithub().users().add("john").keys(); 83 final PublicKey key = keys.create("Title1", "PublicKey1"); 84 MatcherAssert.assertThat( 85 keys.get(key.number()), 86 Matchers.equalTo(key) 87 ); 88 } 89 90 /** 91 * MkPublicKeys should be able to remove a key. 92 * 93 * @throws Exception if a problem occurs. 94 */ 95 @Test 96 public void canRemoveKey() throws Exception { 97 final PublicKeys keys = new MkGithub().users().self().keys(); 98 final PublicKey key = keys.create("rsa", "rsa sh"); 99 MatcherAssert.assertThat( 100 keys.iterate(), 101 Matchers.hasItem(key) 102 ); 103 keys.remove(key.number()); 104 MatcherAssert.assertThat( 105 keys.iterate(), 106 Matchers.not(Matchers.hasItem(key)) 107 ); 108 } 109 110 }