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);
        }
示例#2
0
        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();
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
 public static string DisplayName(this Application application)
 {
     return(CloudOdsApplicationName.GetDisplayName(application.ApplicationName));
 }
        public static bool IsProductionApplication(this Application application)
        {
            var prefix = CloudOdsApplicationName.GetPersistedNamePrefix(CloudOdsEnvironment.Production);

            return(application.ApplicationName.StartsWith(prefix));
        }