### Question:
GlusterFileSystemProvider extends FileSystemProvider { @Override public void createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs) throws IOException { String linkPath = link.toString(); if (Files.exists(link, LinkOption.NOFOLLOW_LINKS)) { throw new FileAlreadyExistsException(linkPath); } if (null != attrs && attrs.length > 0) { throw new UnsupportedOperationException("glfs_symlink does not support atomic mode/perms"); } GlusterFileSystem fileSystem = (GlusterFileSystem) link.getFileSystem(); long volptr = fileSystem.getVolptr(); int ret = GLFS.glfs_symlink(volptr, target.toString(), linkPath); if (0 != ret) { throw new IOException("Unknown error creating symlink: " + linkPath); } }  @Override String getScheme(); @Override FileSystem newFileSystem(URI uri, Map<String, ?> stringMap); @Override FileSystem getFileSystem(URI uri); @Override Path getPath(URI uri); @Override SeekableByteChannel newByteChannel(Path path, Set<? extends OpenOption> openOptions, FileAttribute<?>... fileAttributes); @Override FileChannel newFileChannel(Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs); @Override DirectoryStream<Path> newDirectoryStream(Path path, DirectoryStream.Filter<? super Path> filter); @Override void createDirectory(Path path, FileAttribute<?>... fileAttributes); @Override void delete(Path path); @Override void copy(Path path, Path path2, CopyOption... copyOptions); @Override void move(Path path, Path path2, CopyOption... copyOptions); @Override boolean isSameFile(Path path, Path path2); @Override boolean isHidden(Path path); @Override FileStore getFileStore(Path path); @Override void checkAccess(Path path, AccessMode... accessModes); @Override V getFileAttributeView(Path path, Class<V> vClass, LinkOption... linkOptions); @Override A readAttributes(Path path, Class<A> type, LinkOption... linkOptions); @Override Map<String, Object> readAttributes(Path path, String s, LinkOption... linkOptions); @Override void setAttribute(Path path, String s, Object o, LinkOption... linkOptions); @Override Path readSymbolicLink(Path link); @Override void createSymbolicLink(Path link, Path target, FileAttribute<?>... attrs); static final String GLUSTER; static final int GLUSTERD_PORT; static final String TCP; }### Answer:
@Test(expected = FileAlreadyExistsException.class) public void testCreateSymlink_whenExists() throws IOException { Mockito.doReturn("mockpath").when(mockPath).toString(); mockStatic(Files.class); when(Files.exists(mockPath, LinkOption.NOFOLLOW_LINKS)).thenReturn(true); provider.createSymbolicLink(mockPath, targetPath); }
@Test(expected = UnsupportedOperationException.class) public void testCreateSymlink_whenAttrs() throws IOException { Mockito.doReturn("mockpath").when(mockPath).toString(); mockStatic(Files.class); when(Files.exists(mockPath, LinkOption.NOFOLLOW_LINKS)).thenReturn(false); FileAttribute<Object>[] attrs = new FileAttribute[1]; provider.createSymbolicLink(mockPath, targetPath, attrs); }