/// <summary> /// Imports the data sets and returns a map of old ids to new ids. /// </summary> /// <param name="sessionData">The session data.</param> /// <param name="migrationData">Contains the data sets to import.</param> /// <param name="validationResults">A list of validation results.</param> /// <param name="migrationResults">A list to which import results will be appended.</param> /// <returns>A map of data set ids, where the old id is the key and the new id is the value.</returns> private Dictionary<string, string> ImportDataSets(SessionData sessionData, MigrationData migrationData, MigrationDataResults validationResults, MigrationDataResults migrationResults) { Dictionary<string, string> map = new Dictionary<string, string>(); GenericDataSetList dataSetList = this.manager.GetDataSetList(sessionData.UserId, false); foreach (GenericDataSet dataSet in migrationData.DataSets) { var dataSetId = dataSet.Id; if (!validationResults.GetNotificationsFor(dataSet).CanImport) { migrationResults.AddNotification(dataSet, MessageType.Information, string.Format(Messages.Import_DataSetSkipped, dataSet.Name)); continue; } // Match on dataset name and overwrite if one exists var match = dataSetList.FirstOrDefault(ds => ds.Name == dataSet.Name); if (match != null) { dataSet.Id = match.Id; } GenericDataSet savedDataSet = this.manager.SaveDataSet(dataSet, sessionData.UserId); migrationResults.AddNotification(savedDataSet, MessageType.Information, string.Format(Messages.Import_DataSetSuccess, savedDataSet.Name)); map.Add(dataSetId, savedDataSet.Id); } return map; }
public void NoAccess() { SessionData sessionData = new SessionData { UserId = "NOACCESS" }; const string formId = "4"; this.ApplicationManager.CreateApplicationSecure(sessionData, formId, false); }
public void TestInitialize() { this.Crypto = new RijndaelSymmetricCrypto("password", "rgb init vector.", 8, 8, 256, "verysalty", 3); this.sessionData = new SessionData { IpAddress = "127.0.0.1", SessionId = "1", UserAgent = "Google Chrome", UserId = "Batman" }; this.ipReader = this.CreateMockIpReader(this.sessionData.IpAddress, new List<string>()); this.userReader = this.CreateMockUserReader(this.sessionData.UserId); }
public void GetRolesWithFormEntitlement() { SessionData sessionData = new SessionData { UserId = "Administrator" }; this.Manager.GetRoleList(sessionData.UserId); }
public void GetRolesNoFormEntitlement() { SessionData sessionData = new SessionData { UserId = "SomeUser" }; this.Manager.GetRoleList(sessionData.UserId); }
public void GetRoleWithFormEntitlement() { SessionData sessionData = new SessionData { UserId = "Administrator" }; this.Manager.GetRole(sessionData.UserId, "existing-user"); }
public void GetRoleNoFormEntitlement() { SessionData sessionData = new SessionData { UserId = "SomeUser" }; this.Manager.GetRole(sessionData.UserId, "existing-user"); }
public void Valid() { SessionData sessionData = new SessionData(); const string formId = "5"; RetrieveApplicationResponse response = this.ApplicationManager.CreateApplicationSecure(sessionData, formId, false); Assert.IsNotNull(response.Application); }
/// <summary> /// Gets an attachment with matching <paramref name="fileIdentifier"/>. /// </summary> /// <param name="sessionData">The <see cref="SessionData"/> containing the application id.</param> /// <param name="applicationId">The application id.</param> /// <param name="controlName">The name of the attachment control.</param> /// <param name="fileIdentifier">The file identifier.</param> /// <returns>The attachment as a byte array.</returns> public QueryResult<byte[]> GetAttachment(SessionData sessionData, string applicationId, string controlName, string fileIdentifier) { if (this.CanAccessControl(sessionData, applicationId, controlName, AccessLevel.Read)) { return this.attachmentAccess.GetAttachment(applicationId, controlName, fileIdentifier); } return null; }
/// <summary> /// Creates a session data object. /// </summary> /// <param name="session">The authenticated session object.</param> /// <param name="context">The HTTP context.</param> /// <returns> /// A session data object. /// </returns> public static SessionData CreateSessionDataObject(this SecureSession session, HttpContext context) { SessionData sessionData = new SessionData { DeserializationSource = session.Token, UserId = session.AuthenticatedUser.Id, IpAddress = context.Request.UserHostAddress, UserAgent = context.Request.UserAgent }; return sessionData; }
public void ExistingApplicationNoAccess() { SessionData sessionData = new SessionData { UserId = "NOACCESS" }; using (new MemoryStream()) { this.AttachmentManager.GetAttachmentList(sessionData, "1", "file_upload"); } }
/// <summary> /// Perform an import. /// </summary> /// <param name="sessionData">The session data.</param> /// <param name="migrationData">The data to import.</param> /// <param name="validator">A validator for validating data prior to import.</param> /// <returns>The import process results.</returns> public MigrationDataResults Import(SessionData sessionData, MigrationData migrationData, MigrationDataValidator validator) { MigrationDataResults validationResults = validator.Validate(migrationData); MigrationDataResults migrationResults = new MigrationDataResults(); OrganisationList allOrganisations = this.manager.GetOrganisationList(sessionData.UserId, true); Dictionary<string, string> orgMap = this.ImportOrganisations(sessionData.UserId, allOrganisations, migrationData.Organisations, validationResults, migrationResults); RoleList allRoles = this.manager.GetRoleList(sessionData.UserId); Dictionary<string, string> systemRoleMap = this.ImportRoles(sessionData.UserId, migrationData.Roles, allRoles, validationResults, migrationResults); this.ImportUsers(sessionData, migrationData.Users, allRoles, allOrganisations, systemRoleMap, orgMap, validationResults, migrationResults); this.ImportProducts(sessionData, migrationData, systemRoleMap, orgMap, validationResults, migrationResults); return migrationResults; }
public void ExportUsers() { SessionData sessionData = new SessionData { UserId = "Administrator" }; List<string> userIdList = new List<string> { "53ba02dff9d8ee095cea1fdc" }; MigrationData data = this.Manager.Export(sessionData, new List<string>(), userIdList, false); Assert.AreEqual(0, data.Products.Count); Assert.AreEqual(1, data.Users.Count); }
public void ExportProducts() { SessionData sessionData = new SessionData { UserId = "Administrator" }; List<string> productIdList = new List<string> { "23b2b3a8f5de4380b18433e7", "53b0fcf6606fdc126c1d89f6" }; MigrationData data = this.Manager.Export(sessionData, productIdList, new List<string>(), false); Assert.AreEqual(2, data.Products.Count); Assert.AreEqual(0, data.Users.Count); }
/// <summary> /// Gets a list of file attachment identifiers for an application. /// </summary> /// <param name="sessionData">The iApply session data.</param> /// <param name="applicationId">The application id.</param> /// <param name="controlName">The name of the file upload control.</param> /// <returns>A list of file attachment identifiers for an application.</returns> public QueryResult<List<string>> GetAttachmentList(SessionData sessionData, string applicationId, string controlName) { if (this.CanAccessControl(sessionData, applicationId, controlName, AccessLevel.Read)) { return this.attachmentAccess.GetAttachmentList(applicationId, controlName); } return null; }
/// <summary> /// Validates the user is entitled to access the application. /// </summary> /// <param name="sessionData">The <see cref="SessionData"/> containing the application id.</param> /// <param name="applicationId">The application id.</param> /// <param name="controlName">The name of the attachment control.</param> /// <param name="minimumControlAccess">The minimum control access to check for.</param> /// <returns><see langword="true"/> if the user can access the application.</returns> /// <exception cref="SecurityException">The user is not authorized to access the application/control.</exception> private bool CanAccessControl(SessionData sessionData, string applicationId, string controlName, AccessLevel minimumControlAccess) { if (string.IsNullOrEmpty(applicationId)) { throw new NullReferenceException(); } User user = this.DataAccess.GetUserById(sessionData.UserId); if (user != null && user.IsAdministrator()) { return true; } SecureSession secureSession = new SecureSession(sessionData.DeserializationSource, sessionData.SessionId, user); RetrieveApplicationResponse response = this.applicationManager.GetApplicationSecure(sessionData, applicationId); ControlList controlList = new ControlList() { response.Product.FormDefinition.Pages.AllControls.FindRecursive(c => c.Name == controlName) }; ControlAccess controlsAccess = this.entitlementProvider.GetControlsAccess(secureSession, response.Application, controlList, this.DataAccess.GetRoleList(), response.Product.Version).First(); // Will throw exception if there is an invalid access request. if (controlsAccess.AccessLevel < minimumControlAccess) { throw new SecurityException(); } return true; }
public void Draft() { SessionData sessionData = new SessionData { UserId = "user-1" }; const string formId = "4"; string jsonApplicationData = AssemblyResourceReader.ReadAsString(string.Format("Test_Data.ApplicationData.APP-{0}.json", formId)); ApplicationData applicationData = JsonConvert.DeserializeObject<ApplicationData>(jsonApplicationData); Application application = new Application(null, formId, null, null, applicationData); try { // Submit as non-draft - should fail. this.ApplicationManager.SubmitApplication(sessionData, application, string.Empty); } catch (ValidationException e) { Assert.AreEqual(2, e.ValidationResults.Count); } // Submit as draft - should succeed. application = this.ApplicationManager.SaveApplication(sessionData, application).Item1; Assert.IsFalse(string.IsNullOrEmpty(application.Id)); Assert.IsTrue(application.Draft); }
/// <summary> /// Removes an attachment with matching <paramref name="fileIdentifier"/>. /// </summary> /// <param name="sessionData">The <see cref="SessionData"/> containing the application id.</param> /// <param name="applicationId">The application id.</param> /// <param name="controlName">The name of the attachment control.</param> /// <param name="fileIdentifier">The file identifier.</param> public void RemoveAttachment(SessionData sessionData, string applicationId, string controlName, string fileIdentifier) { if (this.CanAccessControl(sessionData, applicationId, controlName, AccessLevel.Write)) { this.attachmentAccess.RemoveAttachment(applicationId, controlName, fileIdentifier); } }
/// <summary> /// Saves a file attachment for an application. /// </summary> /// <param name="sessionData">The iApply session data.</param> /// <param name="applicationId">The application id.</param> /// <param name="controlName">The name of the file upload control.</param> /// <param name="fileIdentifier">The file identifier.</param> /// <param name="fileStream">The file stream.</param> /// <returns>A <see cref="DataAccessResult"/>.</returns> public DataAccessResult SaveAttachment(SessionData sessionData, string applicationId, string controlName, string fileIdentifier, Stream fileStream) { if (this.CanAccessControl(sessionData, applicationId, controlName, AccessLevel.Write)) { return this.attachmentAccess.SaveAttachment(applicationId, controlName, fileIdentifier, fileStream); } return null; }
public void SubmitToStateAsServiceAccount() { const string orgId = "org-1"; const string formId = "20"; var sessionData = new SessionData { UserId = "EventHandler" }; Application application = new Application(orgId, formId, null); application.ApplicationData.SetValue("exit-organisation", "123456", true); application.WorkflowState = "New"; Application savedApplication = this.ApplicationManager.SubmitApplication(sessionData, application, "Automatic"); Assert.AreEqual("Automatic", savedApplication.WorkflowState); }
public void Valid() { SessionData sessionData = new SessionData(); const string formId = "5"; string jsonApplicationData = AssemblyResourceReader.ReadAsString(string.Format("Test_Data.ApplicationData.APP-{0}.json", formId)); ApplicationData applicationData = JsonConvert.DeserializeObject<ApplicationData>(jsonApplicationData); Application application = new Application(null, formId, null, null, applicationData) { WorkflowState = "test" }; Application savedApplication = this.ApplicationManager.SubmitApplication(sessionData, application, application.WorkflowState); Assert.IsNotNull(savedApplication); }
public void SaveFormDetailsToNewApplication() { SessionData sessionData = new SessionData(); const string formId = "14"; Product p = this.ApplicationManager.GetProduct(formId); Application application = new Application(null, formId, null); Application savedApplication = this.ApplicationManager.SubmitApplication(sessionData, application, string.Empty); Assert.AreEqual(formId, savedApplication.FormId); Assert.AreEqual(p.Version, savedApplication.FormVersion); Assert.AreEqual(p.LinkApplicationsToVersion, savedApplication.UseFormVersion); }
public void SaveLinkedFormVersionToApplication() { SessionData sessionData = new SessionData(); const string formId = "14"; Application application = new Application(null, formId, null) { FormVersion = 1, UseFormVersion = true }; Application savedApplication = this.ApplicationManager.SubmitApplication(sessionData, application, string.Empty); Assert.AreEqual(application.FormVersion, savedApplication.FormVersion); }
public void NoValidateHiddenPages() { SessionData sessionData = new SessionData { UserId = "NOACCESS" }; const string formId = "6"; string jsonApplicationData = AssemblyResourceReader.ReadAsString(string.Format("Test_Data.ApplicationData.APP-{0}.json", formId)); ApplicationData applicationData = JsonConvert.DeserializeObject<ApplicationData>(jsonApplicationData); Application application = new Application(null, formId, null, null, applicationData) { WorkflowState = "New" }; this.ApplicationManager.SubmitApplication(sessionData, application, string.Empty); }
public void OriginatorNoChangeNull() { SessionData sessionData = new SessionData(); const string formId = "5"; const string applicationId = "existing-app"; Application application = new Application(null, formId, null, applicationId) { CreatedBy = new AuthenticatedApplicationUser { Id = "user-1" } }; application.ApplicationData["field_1"] = "value"; Application savedApplication = this.ApplicationManager.SubmitApplication(sessionData, application, sessionData.UserId); Assert.AreEqual(application.CreatedBy.Id, savedApplication.CreatedBy.Id); }
public void NewNoAccess() { SessionData sessionData = new SessionData { UserId = "NOACCESS" }; const string formId = "4"; string jsonApplicationData = AssemblyResourceReader.ReadAsString(string.Format("Test_Data.ApplicationData.APP-{0}.json", formId)); ApplicationData applicationData = JsonConvert.DeserializeObject<ApplicationData>(jsonApplicationData); Application application = new Application(null, formId, null, null, applicationData); this.ApplicationManager.SubmitApplication(sessionData, application, sessionData.UserId); }
public void Invalid() { SessionData sessionData = new SessionData(); const string formId = "6"; string jsonApplicationData = AssemblyResourceReader.ReadAsString(string.Format("Test_Data.ApplicationData.APP-{0}.json", formId)); ApplicationData applicationData = JsonConvert.DeserializeObject<ApplicationData>(jsonApplicationData); Application application = new Application(null, formId, null, null, applicationData); this.ApplicationManager.SubmitApplication(sessionData, application, string.Empty); }
public void CreatedByNotAuthenticated() { SessionData sessionData = new SessionData(); const string formId = "5"; Application application = new Application(null, formId, null); application.ApplicationData["field_1"] = "value"; Application savedApplication = this.ApplicationManager.SubmitApplication(sessionData, application, sessionData.UserId); Assert.AreEqual(sessionData.SessionId, savedApplication.CreatedBy.Id); }
public void RefreshesCalculation() { SessionData sessionData = new SessionData(); ApplicationData appData = new ApplicationData(); appData["field1"] = "1"; appData["field2"] = "1"; appData["field3"] = "window!"; Application submittedApp = new Application(appData) { FormId = "8" }; Application savedApp = this.ApplicationManager.SaveApplication(sessionData, submittedApp).Item1; Assert.AreEqual(2, savedApp.ApplicationData.GetValue<int>("field3")); }
public void RefreshesRepeaterCalculation() { SessionData sessionData = new SessionData(); ApplicationData appData = new ApplicationData(); Dictionary<string, object>[] repeater = new Dictionary<string, object>[2]; appData["repeater1"] = repeater; repeater[0] = new Dictionary<string, object>(); repeater[0]["field1"] = "1"; repeater[0]["field2"] = "1"; repeater[0]["field3"] = "window!"; repeater[1] = new Dictionary<string, object>(); repeater[1]["field1"] = "2"; repeater[1]["field2"] = "2"; repeater[1]["field3"] = "5"; Application submittedApp = new Application(appData) { FormId = "9" }; Application savedApp = this.ApplicationManager.SaveApplication(sessionData, submittedApp).Item1; Assert.AreEqual(2, savedApp.ApplicationData.GetValue<int>("repeater1[0].field3")); Assert.AreEqual(4, savedApp.ApplicationData.GetValue<int>("repeater1[1].field3")); }