@Test
public void testGetContextParameter() {

    CallContext currentContext = CallContext.current();
    Assert.assertEquals("There is nothing in the context. It should return null", null, currentContext.getContextParameter("key"));
    Assert.assertTrue("There is nothing in the context. The map should be empty", currentContext.getContextParameters().isEmpty());
    UUID objectUUID = UUID.randomUUID();
    UUID stringUUID = UUID.randomUUID();
    //Case1: when an entry with the object class is present
    currentContext.putContextParameter(User.class, objectUUID);
    Assert.assertEquals("it should return objectUUID: " + objectUUID, objectUUID, currentContext.getContextParameter(User.class));
    Assert.assertEquals("current context map should have exactly one entry", 1, currentContext.getContextParameters().size());
    //Case2: when an entry with the object class name as String is present
    currentContext.putContextParameter(Account.class.toString(), stringUUID);
    //object is put with key as Account.class.toString but get with key as Account.class
    Assert.assertEquals("it should return stringUUID: " + stringUUID, stringUUID, currentContext.getContextParameter(Account.class));
    Assert.assertEquals("current context map should have exactly two entries", 2, currentContext.getContextParameters().size());
    //Case3: when an entry with both object class and object class name as String is present
    //put an entry of account class object in the context
    currentContext.putContextParameter(Account.class, objectUUID);
    //since both object and string a present in the current context, it should return object value
    Assert.assertEquals("it should return objectUUID: " + objectUUID, objectUUID, currentContext.getContextParameter(Account.class));
    Assert.assertEquals("current context map should have exactly three entries", 3, currentContext.getContextParameters().size());
}