public void ProfileShouldBeOptional() { var vendor = new Vendor { VendorNamespacePrefixes = new List <VendorNamespacePrefix> { new VendorNamespacePrefix { NamespacePrefix = "http://tests.com" } }, VendorName = "Integration Tests" }; var user = new Admin.DataAccess.Models.User { Email = "*****@*****.**", FullName = "Integration Tests", Vendor = vendor }; Save(vendor, user); var command = new AddApplicationCommand(SetupContext, new InstanceContext()); var newApplication = new TestApplication { Environment = CloudOdsEnvironment.Production, ApplicationName = "Test Application", ClaimSetName = "FakeClaimSet", ProfileId = null, VendorId = vendor.VendorId, EducationOrganizationIds = new List <int> { 12345, 67890 } }; var result = command.Execute(newApplication); var persistedApplication = TestContext.Applications.Single(a => a.ApplicationId == result.ApplicationId); persistedApplication.ClaimSetName.ShouldBe("FakeClaimSet"); persistedApplication.Profiles.Count.ShouldBe(0); persistedApplication.ApplicationEducationOrganizations.Count.ShouldBe(2); persistedApplication.ApplicationEducationOrganizations.All(o => o.EducationOrganizationId == 12345 || o.EducationOrganizationId == 67890).ShouldBeTrue(); persistedApplication.Vendor.VendorId.ShouldBeGreaterThan(0); persistedApplication.Vendor.VendorId.ShouldBe(vendor.VendorId); persistedApplication.ApiClients.Count.ShouldBe(1); var apiClient = persistedApplication.ApiClients.First(); apiClient.Name.ShouldBe(CloudOdsApplicationName.GetPersistedName("Test Application", CloudOdsEnvironment.Production)); apiClient.ApplicationEducationOrganizations.All(o => o.EducationOrganizationId == 12345 || o.EducationOrganizationId == 67890).ShouldBeTrue(); apiClient.Key.ShouldBe(result.Key); apiClient.Secret.ShouldBe(result.Secret); }
private bool BeWithinApplicationNameMaxLength(EditApplicationModel model, string applicationName, PropertyValidatorContext context) { var persistedName = CloudOdsApplicationName.GetPersistedName(applicationName, CloudOdsEnvironment.Production); var extraCharactersInName = persistedName.Length - ApplicationExtensions.MaximumApplicationNameLength; if (extraCharactersInName <= 0) { return(true); } context.Rule.MessageBuilder = c => $"The Application Name {applicationName} would be too long for Admin App to set up necessary Application records." + $" Consider shortening the name by {extraCharactersInName} characters."; return(false); }
public void Execute(IEditApplicationModel model) { var application = _context.Applications .Include(a => a.Vendor) .Include(a => a.ApplicationEducationOrganizations) .Include(a => a.ApiClients) .Include(a => a.Profiles) .Single(a => a.ApplicationId == model.ApplicationId); var newVendor = _context.Vendors.Single(v => v.VendorId == model.VendorId); var newApplicationName = CloudOdsApplicationName.GetPersistedName(model.ApplicationName, model.Environment); var newProfile = model.ProfileId.HasValue ? _context.Profiles.Single(p => p.ProfileId == model.ProfileId.Value) : null; var apiClient = application.ApiClients.Single(); apiClient.Name = newApplicationName; application.ApplicationName = newApplicationName; application.ClaimSetName = model.ClaimSetName; application.Vendor = newVendor; if (application.ApplicationEducationOrganizations == null) { application.ApplicationEducationOrganizations = new Collection <ApplicationEducationOrganization>(); } application.ApplicationEducationOrganizations.Clear(); model.EducationOrganizationIds.ToList().ForEach(id => application.ApplicationEducationOrganizations.Add(application.CreateApplicationEducationOrganization(id))); if (application.Profiles == null) { application.Profiles = new Collection <Profile>(); } application.Profiles.Clear(); if (newProfile != null) { application.Profiles.Add(newProfile); } _context.SaveChanges(); }
public void ShouldUpdateAllEntitiesProperly() { SetupTestEntities(); var editModel = new TestEditApplicationModel { ApplicationId = _application.ApplicationId, ApplicationName = "New Application Name", ClaimSetName = "DifferentFakeClaimSet", EducationOrganizationIds = new List <int> { 23456, 78901 }, Environment = CloudOdsEnvironment.Production, ProfileId = _otherProfile.ProfileId, VendorId = _otherVendor.VendorId }; var command = new EditApplicationCommand(SetupContext); command.Execute(editModel); var persistedApplication = TestContext.Applications.Single(a => a.ApplicationId == _application.ApplicationId); persistedApplication.ApplicationName.ShouldBe(CloudOdsApplicationName.GetPersistedName("New Application Name", CloudOdsEnvironment.Production)); persistedApplication.ClaimSetName.ShouldBe("DifferentFakeClaimSet"); persistedApplication.ApiClients.Count.ShouldBe(1); persistedApplication.ApiClients.First().Name.ShouldBe(CloudOdsApplicationName.GetPersistedName("New Application Name", CloudOdsEnvironment.Production)); persistedApplication.ApiClients.First().ApplicationEducationOrganizations.ShouldAllBe(aeo => persistedApplication.ApplicationEducationOrganizations.Contains(aeo)); persistedApplication.Profiles.Count.ShouldBe(1); persistedApplication.Profiles.First().ProfileName.ShouldBe("Other Test Profile"); persistedApplication.ApplicationEducationOrganizations.Count.ShouldBe(2); persistedApplication.ApplicationEducationOrganizations.ShouldAllBe(aeo => aeo.EducationOrganizationId == 23456 || aeo.EducationOrganizationId == 78901); }
public void ShouldRemoveProfileIfNull() { SetupTestEntities(); var editModel = new TestEditApplicationModel { ApplicationId = _application.ApplicationId, ApplicationName = _application.ApplicationName, ClaimSetName = _application.ClaimSetName, EducationOrganizationIds = new List <int> { 12345, 67890 }, Environment = CloudOdsEnvironment.Production, ProfileId = null, VendorId = _vendor.VendorId }; var command = new EditApplicationCommand(SetupContext); command.Execute(editModel); var persistedApplication = TestContext.Applications.Single(a => a.ApplicationId == _application.ApplicationId); persistedApplication.ApplicationName.ShouldBe(CloudOdsApplicationName.GetPersistedName("Test Application", CloudOdsEnvironment.Production)); persistedApplication.ClaimSetName.ShouldBe("FakeClaimSet"); persistedApplication.ApiClients.Count.ShouldBe(1); persistedApplication.ApiClients.First().Name.ShouldBe(CloudOdsApplicationName.GetPersistedName("Test Application", CloudOdsEnvironment.Production)); persistedApplication.ApiClients.First().ApplicationEducationOrganizations.ShouldAllBe(aeo => persistedApplication.ApplicationEducationOrganizations.Contains(aeo)); persistedApplication.ApplicationEducationOrganizations.Count.ShouldBe(2); persistedApplication.ApplicationEducationOrganizations.ShouldAllBe(aeo => aeo.EducationOrganizationId == 12345 || aeo.EducationOrganizationId == 67890); persistedApplication.Profiles.Count.ShouldBe(0); }
public void ShouldExecute() { const string odsInstanceName = "Test Instance"; var vendor = new Vendor { VendorNamespacePrefixes = new List <VendorNamespacePrefix> { new VendorNamespacePrefix { NamespacePrefix = "http://tests.com" } }, VendorName = "Integration Tests" }; var user = new Admin.DataAccess.Models.User { Email = "*****@*****.**", FullName = "Integration Tests", Vendor = vendor }; var profile = new Profile { ProfileName = "Test Profile" }; var odsInstance = new OdsInstance { Name = odsInstanceName, InstanceType = "Ods", IsExtended = false, Status = "OK", Version = "1.0.0" }; Save(vendor, user, profile, odsInstance); var instanceContext = new InstanceContext { Id = 1, Name = odsInstanceName }; var command = new AddApplicationCommand(SetupContext, instanceContext); var newApplication = new TestApplication { Environment = CloudOdsEnvironment.Production, ApplicationName = "Test Application", ClaimSetName = "FakeClaimSet", ProfileId = profile.ProfileId, VendorId = vendor.VendorId, EducationOrganizationIds = new List <int> { 12345, 67890 } }; var result = command.Execute(newApplication); var persistedApplication = TestContext.Applications.Single(a => a.ApplicationId == result.ApplicationId); persistedApplication.ClaimSetName.ShouldBe("FakeClaimSet"); persistedApplication.Profiles.Count.ShouldBe(1); persistedApplication.Profiles.First().ProfileName.ShouldBe("Test Profile"); persistedApplication.ApplicationEducationOrganizations.Count.ShouldBe(2); persistedApplication.ApplicationEducationOrganizations.All(o => o.EducationOrganizationId == 12345 || o.EducationOrganizationId == 67890).ShouldBeTrue(); persistedApplication.Vendor.VendorId.ShouldBeGreaterThan(0); persistedApplication.Vendor.VendorId.ShouldBe(vendor.VendorId); persistedApplication.ApiClients.Count.ShouldBe(1); var apiClient = persistedApplication.ApiClients.First(); apiClient.Name.ShouldBe(CloudOdsApplicationName.GetPersistedName("Test Application", CloudOdsEnvironment.Production)); apiClient.ApplicationEducationOrganizations.All(o => o.EducationOrganizationId == 12345 || o.EducationOrganizationId == 67890).ShouldBeTrue(); apiClient.Key.ShouldBe(result.Key); apiClient.Secret.ShouldBe(result.Secret); persistedApplication.OdsInstance.ShouldNotBeNull(); persistedApplication.OdsInstance.Name.ShouldBe(odsInstanceName); }
public AddApplicationResult Execute(IAddApplicationModel applicationModel) { var profile = applicationModel.ProfileId.HasValue ? _usersContext.Profiles.SingleOrDefault(p => p.ProfileId == applicationModel.ProfileId.Value) : null; var vendor = _usersContext.Vendors.Single(v => v.VendorId == applicationModel.VendorId); var persistedApplicationName = CloudOdsApplicationName.GetPersistedName(applicationModel.ApplicationName, applicationModel.Environment); var odsInstance = _usersContext.OdsInstances.FirstOrDefault(x => x.Name.Equals(_instanceContext.Name, StringComparison.InvariantCultureIgnoreCase)); var user = new VendorUser { Email = "", FullName = persistedApplicationName, Vendor = vendor }; var apiClient = new ApiClient(true) { Name = persistedApplicationName, IsApproved = true, UseSandbox = false, KeyStatus = "Active", User = user }; var applicationEdOrgs = applicationModel.EducationOrganizationIds == null ? Enumerable.Empty <ApplicationEducationOrganization>() : applicationModel.EducationOrganizationIds.Select(id => new ApplicationEducationOrganization { Clients = new List <ApiClient> { apiClient }, EducationOrganizationId = id }); var application = new Application { ApplicationName = persistedApplicationName, ApiClients = new List <ApiClient> { apiClient }, ApplicationEducationOrganizations = new List <ApplicationEducationOrganization>(applicationEdOrgs), ClaimSetName = applicationModel.ClaimSetName, Profiles = new List <Profile>(), Vendor = vendor, OperationalContextUri = OperationalContext.DefaultOperationalContextUri, OdsInstance = odsInstance }; if (profile != null) { application.Profiles.Add(profile); } _usersContext.Applications.Add(application); _usersContext.SaveChanges(); return(new AddApplicationResult { ApplicationId = application.ApplicationId, Key = apiClient.Key, Secret = apiClient.Secret }); }
private ApiClient SetupApplicationForInstance(OdsInstance instance) { var vendor = new Vendor { VendorNamespacePrefixes = new List <VendorNamespacePrefix> { new VendorNamespacePrefix { NamespacePrefix = "http://tests.com" } }, VendorName = "Integration Tests" }; var user = new Admin.DataAccess.Models.User { Email = "*****@*****.**", FullName = "Integration Tests", Vendor = vendor }; var profile = new Profile { ProfileName = "Test Profile" }; Save(vendor, user, profile, instance); var instanceContext = new InstanceContext { Id = instance.OdsInstanceId, Name = instance.Name }; var command = new AddApplicationCommand(SetupContext, instanceContext); var newApplication = new TestApplication { Environment = CloudOdsEnvironment.Production, ApplicationName = "Test Application", ClaimSetName = "FakeClaimSet", ProfileId = profile.ProfileId, VendorId = vendor.VendorId, EducationOrganizationIds = new List <int> { 12345, 67890 } }; var result = command.Execute(newApplication); var persistedApplication = TestContext.Applications.Single(a => a.ApplicationId == result.ApplicationId); persistedApplication.ApiClients.Count.ShouldBe(1); var apiClient = persistedApplication.ApiClients.First(); apiClient.Name.ShouldBe(CloudOdsApplicationName.GetPersistedName("Test Application", CloudOdsEnvironment.Production)); apiClient.ApplicationEducationOrganizations.All(o => o.EducationOrganizationId == 12345 || o.EducationOrganizationId == 67890).ShouldBeTrue(); apiClient.Key.ShouldBe(result.Key); apiClient.Secret.ShouldBe(result.Secret); persistedApplication.OdsInstance.ShouldNotBeNull(); persistedApplication.OdsInstance.Name.ShouldBe(instance.Name); return(apiClient); }