package cn.com.jautoitx; import java.io.File; import org.apache.commons.lang3.StringUtils; import org.junit.Assert; import org.junit.Test; import cn.com.jautoitx.DriveMap.DriveMapAddError; import cn.com.jautoitx.DriveMap.DriveMapAddFlag; public class DriveMapTest extends BaseTest { @Test public void add() { long currentTimeMillis = System.currentTimeMillis(); File dir = new File("test/tmp" + currentTimeMillis); String netname = "add" + currentTimeMillis; String path = dir.getAbsolutePath(); boolean netShareAdded = false; try { Assert.assertTrue(dir.mkdir()); // add net share with read permission Assert.assertTrue(netShareAdd(null, netname, "add Test", NET_SHARE_PERMISSION_ACCESS_READ, path, null)); netShareAdded = true; // add drive map String drive = DriveMap.add( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertTrue(StringUtils.isNotBlank(drive)); Assert.assertTrue(drive.endsWith(":")); String drive2 = DriveMap.add( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertTrue(StringUtils.isNotBlank(drive2)); Assert.assertTrue(drive2.endsWith(":")); Assert.assertNotEquals(drive, drive2); // delete drive map Assert.assertTrue(DriveMap.del(drive)); Assert.assertTrue(DriveMap.del(drive2)); // add drive map String drive3 = DriveMap.add(drive, String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertEquals(drive3, drive); // The device is already assigned Assert.assertNull(DriveMap.add(drive, String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT)); Assert.assertEquals(DriveMapAddError.DEVICE_ALREADY_ASSIGNED, DriveMap.getAddError()); // delete drive map Assert.assertTrue(DriveMap.del(drive3)); // Undefined / Other error Assert.assertNull(DriveMap.add( String.format("\\\\xxxx.com\\%s", netname), DriveMapAddFlag.DEFAULT)); Assert.assertEquals(DriveMapAddError.UNDEFINED, DriveMap.getAddError()); // Invalid device name Assert.assertNull(DriveMap.add("HelloDevice", String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT)); Assert.assertEquals(DriveMapAddError.INVALID_DEVICE_NAME, DriveMap.getAddError()); // delete net share Assert.assertTrue(netShareDel(null, netname)); netShareAdded = false; // add net share with none permission and password 'test' Assert.assertTrue(netShareAdd(null, netname, "add Test", NET_SHARE_PERMISSION_ACCESS_NONE, path, "test")); netShareAdded = true; // delete net share Assert.assertTrue(netShareDel(null, netname)); netShareAdded = false; } finally { if (dir.exists()) { if (netShareAdded) { // delete net share Assert.assertTrue(netShareDel(null, netname)); } Assert.assertTrue(dir.delete()); } } } @Test public void del() { long currentTimeMillis = System.currentTimeMillis(); File dir = new File("test/tmp" + currentTimeMillis); String netname = "driveMapDel" + currentTimeMillis; String path = dir.getAbsolutePath(); boolean netShareAdded = false; try { Assert.assertTrue(dir.mkdir()); // add net share with read permission Assert.assertTrue(netShareAdd(null, netname, "driveMapDel Test", NET_SHARE_PERMISSION_ACCESS_READ, path, null)); netShareAdded = true; // add drive map String drive = DriveMap.add( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertTrue(StringUtils.isNotBlank(drive)); Assert.assertTrue(drive.endsWith(":")); String drive2 = DriveMap.add( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertTrue(StringUtils.isNotBlank(drive2)); Assert.assertTrue(drive2.endsWith(":")); Assert.assertNotEquals(drive, drive2); String drive3 = DriveMap.add(null, String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertEquals("", drive3); Assert.assertNull(DriveMap.getAddError()); // delete drive map Assert.assertTrue(DriveMap.del(drive)); Assert.assertTrue(DriveMap.del(drive2)); // If a connection has no drive letter mapped you may use the // connection name to disconnect, e.g. \\server\share Assert.assertTrue(DriveMap.del(String.format("\\\\%s\\%s", getHostAddress(), netname))); // delete drive map Assert.assertFalse(DriveMap.del(drive)); Assert.assertFalse(DriveMap.del(drive2)); Assert.assertFalse(DriveMap.del(String.format("\\\\%s\\%s", getHostAddress(), netname))); // add drive map String drive4 = DriveMap.add(null, String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertEquals("", drive4); Assert.assertNull(DriveMap.getAddError()); String drive5 = DriveMap.add(null, String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertEquals("", drive5); Assert.assertNull(DriveMap.getAddError()); // If a connection has no drive letter mapped you may use the // connection name to disconnect, e.g. \\server\share Assert.assertTrue(DriveMap.del(String.format("\\\\%s\\%s", getHostAddress(), netname))); Assert.assertFalse(DriveMap.del(String.format("\\\\%s\\%s", getHostAddress(), netname))); } finally { if (dir.exists()) { if (netShareAdded) { // delete net share Assert.assertTrue(netShareDel(null, netname)); } Assert.assertTrue(dir.delete()); } } } @Test public void get() { long currentTimeMillis = System.currentTimeMillis(); File dir = new File("test/tmp" + currentTimeMillis); String netname = "driveMapGet" + currentTimeMillis; String path = dir.getAbsolutePath(); boolean netShareAdded = false; try { Assert.assertTrue(dir.mkdir()); // add net share with read permission Assert.assertTrue(netShareAdd(null, netname, "driveMapGet Test", NET_SHARE_PERMISSION_ACCESS_READ, path, null)); netShareAdded = true; // add drive map String drive = DriveMap.add( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertTrue(StringUtils.isNotBlank(drive)); Assert.assertTrue(drive.endsWith(":")); String drive2 = DriveMap.add( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMapAddFlag.DEFAULT); Assert.assertTrue(StringUtils.isNotBlank(drive2)); Assert.assertTrue(drive2.endsWith(":")); Assert.assertNotEquals(drive, drive2); // get drive map Assert.assertEquals( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMap.get(drive)); Assert.assertEquals( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMap.get(drive2)); // delete drive map Assert.assertTrue(DriveMap.del(drive)); // get drive map Assert.assertNull(DriveMap.get(drive)); Assert.assertTrue(AutoItX.hasError()); Assert.assertEquals( String.format("\\\\%s\\%s", getHostAddress(), netname), DriveMap.get(drive2)); // delete drive map Assert.assertTrue(DriveMap.del(drive2)); Assert.assertNull(DriveMap.get(drive)); Assert.assertTrue(AutoItX.hasError()); Assert.assertNull(DriveMap.get(drive2)); Assert.assertTrue(AutoItX.hasError()); } finally { if (dir.exists()) { if (netShareAdded) { // delete net share Assert.assertTrue(netShareDel(null, netname)); } Assert.assertTrue(dir.delete()); } } } }