diff --git a/tests/Partitioning/swen90006/passbook/PartitioningTests.java b/tests/Partitioning/swen90006/passbook/PartitioningTests.java
index e7a6efd37025b6e88fed7b30d618c3c430105ad5..3867e9455b2fc8da98cbcffb4f8c0e532466d99e 100644
--- a/tests/Partitioning/swen90006/passbook/PartitioningTests.java
+++ b/tests/Partitioning/swen90006/passbook/PartitioningTests.java
@@ -1,13 +1,18 @@
 package swen90006.passbook;
 
 import java.util.List;
+import java.util.Map;
 import java.util.ArrayList;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.nio.charset.Charset;
 import java.nio.file.Path;
 import java.nio.file.Files;
 import java.nio.file.FileSystems;
 
 import org.junit.*;
+
+
 import static org.junit.Assert.*;
 
 public class PartitioningTests
@@ -16,9 +21,10 @@ public class PartitioningTests
 
     //Any method annotated with "@Before" will be executed before each test,
     //allowing the tester to set up some shared resources.
-    @Before public void setUp()
+    @Before public void setUp() throws DuplicateUserException, WeakPassphraseException
     {
 	pb = new PassBook();
+	pb.addUser("passbookUsername", "Abcd12345");
     }
 
     //Any method annotated with "@After" will be executed after each test,
@@ -26,43 +32,205 @@ public class PartitioningTests
     @After public void tearDown()
     {
     }
-
-    //Any method annotation with "@Test" is executed as a test.
-    @Test public void aTest()
-    {
-	//the assertEquals method used to check whether two values are
-	//equal, using the equals method
-	final int expected = 2;
-	final int actual = 1 + 1;
-	assertEquals(expected, actual);
+    //addUser Test case
+    @Test(expected = DuplicateUserException.class) 
+    public void addUserEC1Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsername", "properPassphrase1");
     }
-
-    @Test public void anotherTest()
-	throws DuplicateUserException, WeakPassphraseException
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC2Test()throws DuplicateUserException, WeakPassphraseException
     {
-	pb.addUser("passbookUsername", "properPassphrase1");
+    	pb.addUser("passbookUsername2", "Abbb1");
+    }
+    @Test
+    public void addUserEC3Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsername3", "Aaab13222");
+    	assertTrue(pb.isUser("passbookUsername3"));
 
-	//the assertTrue method is used to check whether something holds.
-	assertTrue(pb.isUser("passbookUsername"));
-	assertFalse(pb.isUser("nonUser"));
     }
-  
-    //To test an exception, specify the expected exception after the @Test
-    @Test(expected = java.io.IOException.class) 
-    public void anExceptionTest()
-	throws Throwable
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC4Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsernamee", "123456789");
+    }
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC5Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsernamee", "abcdefghijk");
+    }
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC6Test()throws DuplicateUserException, WeakPassphraseException
     {
-	throw new java.io.IOException();
+    	pb.addUser("passbookUsernamee", "ABCDEFGHIJK");
     }
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC7Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsernamee", "ABCD12345");
+    }
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC8Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsernamee", "abcd12345");
+    }
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC9Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsernamee", "ABCDabcde");
+    }
+    @Test(expected = WeakPassphraseException.class) 
+    public void addUserEC10Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsernamee", "-=-@$#@**()&^%");
+    }
+    @Test
+    public void addUserEC11Test()throws DuplicateUserException, WeakPassphraseException
+    {
+    	pb.addUser("passbookUsername3", "Aaab1222");
+    	assertTrue(pb.isUser("passbookUsername3"));
 
-    //This test should fail.
-    //To provide additional feedback when a test fails, an error message
-    //can be included
-    @Test public void aFailedTest()
-    {
-	//include a message for better feedback
-	final int expected = 2;
-	final int actual = 1 + 2;
-	assertEquals("Some failure message", expected, actual);
     }
+    
+    // loginUser test case    
+    @Test(expected = NoSuchUserException.class) 
+    public void loginUserEC1Test()throws NoSuchUserException, AlreadyLoggedInException, IncorrectPassphraseException
+    {
+    	pb.loginUser("passbookUsernamee", "Abcd12345");
+    }
+    @Test(expected = AlreadyLoggedInException.class) 
+    public void loginUserEC2Test()throws NoSuchUserException, AlreadyLoggedInException, IncorrectPassphraseException
+    {
+    	pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.loginUser("passbookUsername", "Abcd12345");
+    	} 
+    @Test(expected = IncorrectPassphraseException.class) 
+    public void loginUserEC3Test()throws NoSuchUserException, AlreadyLoggedInException, IncorrectPassphraseException
+    {
+    	pb.loginUser("passbookUsername", "ABCDEa12345");
+    }  
+    @Test
+    public void loginUserEC4Test()throws NoSuchUserException, AlreadyLoggedInException, IncorrectPassphraseException
+    {
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.logoutUser(sessionID);
+    	} 
+    
+    // updateDetails test case
+    @Test(expected = InvalidSessionIDException.class) 
+    public void updateDetailsEC1Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.logoutUser(sessionID);
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	} 
+    @Test(expected = MalformedURLException.class) 
+    public void updateDetailsEC2Test()throws Throwable
+    {
+    	URL url = new URL("://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.logoutUser(sessionID);
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	} 
+    @Test
+    public void updateDetailsEC3Test()throws Throwable
+    {
+    	URL url = new URL("https://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	assertNotNull(pb.retrieveDetails(sessionID, url));
+    	}     
+    @Test (expected = NoSuchURLException.class)
+    public void updateDetailsEC4Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+ 
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url, null, "Abcd12345");
+    	pb.retrieveDetails(sessionID, url);
+    	} 
+    @Test (expected = NoSuchURLException.class)
+    public void updateDetailsEC5Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+ 
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url, "passbookUsername", null);
+    	pb.retrieveDetails(sessionID, url);
+    	}
+    @Test (expected = NoSuchURLException.class)
+    public void updateDetailsEC6Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+ 
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url, null, null);
+    	pb.retrieveDetails(sessionID, url);
+    	}   
+    @Test
+    public void updateDetailsEC7Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+ 
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	assertNotNull(pb.retrieveDetails(sessionID, url));
+    	}  
+    //retrieveDetails test case
+    @Test(expected = InvalidSessionIDException.class) 
+    public void retrieveDetailsEC1Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.logoutUser(sessionID);
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	assertNotNull(pb.retrieveDetails(sessionID, url));
+    	} 
+    @Test(expected = MalformedURLException.class) 
+    public void retrieveDetailsEC2Test()throws Throwable
+    {
+    	URL url = new URL("://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.logoutUser(sessionID);
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	pb.retrieveDetails(sessionID, url);
+    	} 
+    @Test
+    public void retrieveDetailsEC3Test()throws Throwable
+    {
+    	URL url = new URL("https://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	pb.retrieveDetails(sessionID, url);
+    	}   
+    @Test(expected = NoSuchURLException.class) 
+    public void retrieveDetailsEC4Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	//pb.updateDetails(sessionID, url, "passbookUsername", "Abcd1234");
+    	pb.retrieveDetails(sessionID, url);
+    	} 
+    @Test(expected = NoSuchURLException.class) 
+    public void retrieveDetailsEC5Test()throws Throwable
+    {
+    	URL url1 = new URL("http://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url1, "passbookUsername", "Abcd12345");
+    	URL url2 = new URL("http://helloworldddd.com");
+
+    	pb.retrieveDetails(sessionID, url2);
+    	} 
+    @Test
+    public void retrieveDetailsEC6Test()throws Throwable
+    {
+    	URL url = new URL("http://helloworld.com");
+    	int sessionID=pb.loginUser("passbookUsername", "Abcd12345");
+    	pb.updateDetails(sessionID, url, "passbookUsername", "Abcd12345");
+    	assertNotNull(pb.retrieveDetails(sessionID, url));
+    	}   
 }
+
+