public void CheckRoles(out string friendlyMessage, Source source, UserType user, string username)
        {
            try {
                bool dummy = false, owner = false, canRead = false, canWrite = false;
                bool hasAccessAdmin = false, hasDDLAdmin = false, hasSecurityAdmin = false;
                var  config = ((PlatformDatabaseConfiguration)uiConfiguration).RuntimeDatabaseConfiguration(source, user);
                try {
                    ConfigurationManagerUtils.GetDBUserRoles(username, ref dummy, ref owner, ref canRead, ref canWrite, ref hasAccessAdmin, ref hasDDLAdmin, ref hasSecurityAdmin, config);

                    switch (user)
                    {
                    case UserType.Admin:
                        if (!owner)
                        {
                            if (!ConfigurationManagerUtils.CheckDBAdminRoles(username, hasAccessAdmin, hasSecurityAdmin, hasDDLAdmin, canRead, canWrite, out friendlyMessage))
                            {
                                return;
                            }
                        }
                        break;

                    case UserType.Runtime:
                        if (!owner)
                        {
                            ConfigurationManagerUtils.CheckDBPlatformRuntimeRoles(username, canRead, canWrite, out friendlyMessage);
                            if (!friendlyMessage.IsNullOrEmpty())
                            {
                                return;
                            }
                        }
                        break;
                    }

                    if (!ConfigurationManagerUtils.CheckHubServerVersion(this, config, out friendlyMessage))
                    {
                        return;
                    }
                } catch {
                    friendlyMessage = "Database connection was successful.\r\n\r\nHowever, it was not possible to read the schema version. This may be because the schema has not been created yet.";
                    return;
                }
            } catch (Exception exception) {
                friendlyMessage = "Database connection was successful.\r\n\r\nHowever the following error ocurred while trying to read user permissions:\r\n\r\nFailed to retrieve user roles:\r\n\r\n" + exception.Message;
                return;
            }
            friendlyMessage = "Test completed successfully.";
        }