Example #1
0
        public void ShouldDeleteVendorWithUser()
        {
            var newVendor = new Vendor {
                VendorName = "test vendor"
            };
            var newUser = new VendorUser {
                FullName = "test user"
            };

            newVendor.Users.Add(newUser);
            Save(newVendor);
            var vendorId = newVendor.VendorId;
            var userId   = newUser.UserId;

            userId.ShouldBeGreaterThan(0);


            Scoped <IUsersContext>(usersContext =>
            {
                var deleteVendorCommand = new DeleteVendorCommand(usersContext, null);
                deleteVendorCommand.Execute(vendorId);
            });

            Transaction(usersContext => usersContext.Vendors.Where(v => v.VendorId == vendorId).ToArray()).ShouldBeEmpty();
            Transaction(usersContext => usersContext.Users.Where(u => u.UserId == userId).ToArray()).ShouldBeEmpty();
        }
        public void Init()
        {
            var originalVendor = new Vendor
            {
                VendorName = "old vendor name",
                VendorNamespacePrefixes = new List <VendorNamespacePrefix> {
                    new VendorNamespacePrefix {
                        NamespacePrefix = "old namespace prefix"
                    }
                },
            };
            var originalVendorWithNoNameSpace = new Vendor
            {
                VendorName = "old vendor name",
                VendorNamespacePrefixes = new List <VendorNamespacePrefix>()
            };
            var originalVendorContact = new VendorUser
            {
                FullName = "old contact name",
                Email    = "old contact email",
                Vendor   = originalVendor
            };

            originalVendor.Users.Add(originalVendorContact);
            originalVendorWithNoNameSpace.Users.Add(originalVendorContact);

            Save(originalVendor, originalVendorWithNoNameSpace);
            _vendorId = originalVendor.VendorId;
            _vendorWithNoNameSpaceId = originalVendorWithNoNameSpace.VendorId;
        }
Example #3
0
        public Vendor Execute(IAddVendorModel newVendor)
        {
            var namespacePrefixes = new List <VendorNamespacePrefix>();

            if (!string.IsNullOrWhiteSpace(newVendor.NamespacePrefixes))
            {
                var namespacePrefixSplits = newVendor.NamespacePrefixes.Split(",");

                namespacePrefixes.AddRange(namespacePrefixSplits.Select(
                                               namespacePrefix => new VendorNamespacePrefix
                {
                    NamespacePrefix = namespacePrefix.Trim()
                }));
            }

            var vendor = new Vendor
            {
                VendorName = newVendor.Company.Trim(),
                VendorNamespacePrefixes = namespacePrefixes
            };

            var user = new VendorUser
            {
                FullName = newVendor.ContactName.Trim(),
                Email    = newVendor.ContactEmailAddress.Trim()
            };

            vendor.Users.Add(user);

            _context.Vendors.Add(vendor);
            _context.SaveChanges();
            return(vendor);
        }
Example #4
0
        public int Execute(IAddVendorModel newVendor)
        {
            var namespacePrefixes = new List <VendorNamespacePrefix>();

            if (!string.IsNullOrWhiteSpace(newVendor.NamespacePrefix))
            {
                namespacePrefixes.Add(new VendorNamespacePrefix
                {
                    NamespacePrefix = newVendor.NamespacePrefix.Trim(),
                });
            }

            var vendor = new Vendor
            {
                VendorName = newVendor.Company.Trim(),
                VendorNamespacePrefixes = namespacePrefixes
            };

            var user = new VendorUser
            {
                FullName = newVendor.ContactName.Trim(),
                Email    = newVendor.ContactEmailAddress.Trim()
            };

            vendor.Users.Add(user);

            _context.Vendors.Add(vendor);
            _context.SaveChanges();
            return(vendor.VendorId);
        }
        public void ShouldUpdateApiClientSecret()
        {
            var vendor = new Vendor
            {
                VendorNamespacePrefixes = new List <VendorNamespacePrefix> {
                    new VendorNamespacePrefix {
                        NamespacePrefix = "http://tests.com"
                    }
                },
                VendorName = "Integration Tests"
            };

            var user = new VendorUser
            {
                Email    = "*****@*****.**",
                FullName = "Integration Tests",
                Vendor   = vendor
            };

            var profile = new Profile
            {
                ProfileName = "Test Profile"
            };

            var apiClient = new ApiClient(true)
            {
                Name = "Integration Test"
            };

            var application = new Application
            {
                ApplicationName       = "Test Application",
                ClaimSetName          = "FakeClaimSet",
                ApiClients            = new List <ApiClient>(),
                Vendor                = vendor,
                Profiles              = new List <Profile>(),
                OperationalContextUri = OperationalContext.DefaultOperationalContextUri
            };

            application.ApiClients.Add(apiClient);
            application.Profiles.Add(profile);

            Save(vendor, user, profile, application);

            var orignalKey     = apiClient.Key;
            var originalSecret = apiClient.Secret;

            var command = new RegenerateApiClientSecretCommand(SetupContext);
            var result  = command.Execute(application.ApplicationId);

            var updatedApiClient = TestContext.Clients.Single(c => c.ApiClientId == apiClient.ApiClientId);

            result.Key.ShouldBe(orignalKey);
            result.Secret.ShouldNotBe(originalSecret);
            result.Secret.ShouldNotBeEmpty();

            updatedApiClient.Key.ShouldBe(result.Key);
            updatedApiClient.Secret.ShouldBe(result.Secret);
        }
        public Vendor Execute(IEditVendor changedVendorData)
        {
            var vendor = _context.Vendors.SingleOrDefault(v => v.VendorId == changedVendorData.VendorId);

            if (vendor == null)
            {
                throw new NotFoundException <int>("vendor", changedVendorData.VendorId);
            }
            if (vendor.IsSystemReservedVendor())
            {
                throw new Exception("This vendor is required for proper system function and may not be modified.");
            }

            vendor.VendorName = changedVendorData.Company;

            if (vendor.VendorNamespacePrefixes.Any())
            {
                foreach (var vendorNamespacePrefix in vendor.VendorNamespacePrefixes.ToList())
                {
                    _context.VendorNamespacePrefixes.Remove(vendorNamespacePrefix);
                }
            }

            if (!string.IsNullOrEmpty(changedVendorData.NamespacePrefixes))
            {
                var namespacePrefixSplits = changedVendorData.NamespacePrefixes.Split(",");

                foreach (var namespacePrefix in namespacePrefixSplits)
                {
                    _context.VendorNamespacePrefixes.Add(new VendorNamespacePrefix
                    {
                        NamespacePrefix = namespacePrefix,
                        Vendor          = vendor
                    });
                }
            }

            if (vendor.Users?.FirstOrDefault() != null)
            {
                vendor.Users.First().FullName = changedVendorData.ContactName;
                vendor.Users.First().Email    = changedVendorData.ContactEmailAddress;
            }

            else
            {
                var vendorContact = new VendorUser
                {
                    Vendor   = vendor,
                    FullName = changedVendorData.ContactName,
                    Email    = changedVendorData.ContactEmailAddress
                };
                vendor.Users = new List <VendorUser> {
                    vendorContact
                };
            }

            _context.SaveChanges();
            return(vendor);
        }
Example #7
0
        public void Execute(IEditVendor changedVendorData)
        {
            var vendor = _context.Vendors.Single(v => v.VendorId == changedVendorData.VendorId);

            vendor.VendorName = changedVendorData.Company;

            // because of no UI support for multiple VendorNamespacePrefixes,
            // we will always have only one VendorNamespacePrefix associated with vendor.
            // So, we'll update/remove the first item available.
            if (!string.IsNullOrEmpty(changedVendorData.NamespacePrefix))
            {
                if (vendor.VendorNamespacePrefixes.Any())
                {
                    vendor.VendorNamespacePrefixes.First().NamespacePrefix = changedVendorData.NamespacePrefix;
                }
                else
                {
                    vendor.VendorNamespacePrefixes.Add(new VendorNamespacePrefix
                    {
                        NamespacePrefix = changedVendorData.NamespacePrefix,
                        Vendor          = vendor
                    });
                }
            }
            else
            {
                if (vendor.VendorNamespacePrefixes.Any())
                {
                    var toRemove = vendor.VendorNamespacePrefixes.First();
                    _context.VendorNamespacePrefixes.Remove(toRemove);
                }
            }

            if (vendor.Users?.FirstOrDefault() != null)
            {
                vendor.Users.First().FullName = changedVendorData.ContactName;
                vendor.Users.First().Email    = changedVendorData.ContactEmailAddress;
            }

            else
            {
                var vendorContact = new VendorUser
                {
                    Vendor   = vendor,
                    FullName = changedVendorData.ContactName,
                    Email    = changedVendorData.ContactEmailAddress
                };
                vendor.Users = new List <VendorUser> {
                    vendorContact
                };
            }

            _context.SaveChanges();
        }
        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
            });
        }
Example #9
0
        private void SetupTestEntities()
        {
            _vendor = new Vendor
            {
                VendorNamespacePrefixes = new List <VendorNamespacePrefix> {
                    new VendorNamespacePrefix {
                        NamespacePrefix = "http://tests.com"
                    }
                },
                VendorName = "Integration Tests"
            };

            _otherVendor = new Vendor
            {
                VendorNamespacePrefixes = new List <VendorNamespacePrefix> {
                    new VendorNamespacePrefix {
                        NamespacePrefix = "http://tests.com"
                    }
                },
                VendorName = "Different Integration Tests"
            };

            _user = new VendorUser
            {
                Email    = "*****@*****.**",
                FullName = "Integration Tests",
                Vendor   = _vendor
            };

            _otherUser = new VendorUser
            {
                Email    = "*****@*****.**",
                FullName = "Different Integration Tests",
                Vendor   = _otherVendor
            };

            _profile = new Profile
            {
                ProfileName = "Test Profile"
            };

            _otherProfile = new Profile
            {
                ProfileName = "Other Test Profile"
            };

            _apiClient = new ApiClient(true)
            {
                Name       = "Integration Test",
                UseSandbox = false,
            };

            _application = new Application
            {
                ApplicationName       = "Test Application",
                ClaimSetName          = "FakeClaimSet",
                Vendor                = _vendor,
                OperationalContextUri = OperationalContext.DefaultOperationalContextUri
            };

            _application.ApiClients.Add(_apiClient);
            _application.Profiles.Add(_profile);
            _application.ApplicationEducationOrganizations.Add(_application.CreateApplicationEducationOrganization(12345));
            _application.ApplicationEducationOrganizations.Add(_application.CreateApplicationEducationOrganization(67890));

            Save(_vendor, _otherVendor, _user, _otherUser, _profile, _otherProfile, _application);
        }
        public void ShouldUpdateApiClientSecret()
        {
            var vendor = new Vendor
            {
                VendorNamespacePrefixes = new List <VendorNamespacePrefix> {
                    new VendorNamespacePrefix {
                        NamespacePrefix = "http://tests.com"
                    }
                },
                VendorName = "Integration Tests"
            };

            var user = new VendorUser
            {
                Email    = "*****@*****.**",
                FullName = "Integration Tests",
                Vendor   = vendor
            };

            var profile = new Profile
            {
                ProfileName = "Test Profile"
            };

            var apiClient = new ApiClient(true)
            {
                Name = "Integration Test"
            };

            var application = new Application
            {
                ApplicationName       = "Test Application",
                ClaimSetName          = "FakeClaimSet",
                ApiClients            = new List <ApiClient>(),
                Vendor                = vendor,
                Profiles              = new List <Profile>(),
                OperationalContextUri = OperationalContext.DefaultOperationalContextUri
            };

            application.ApiClients.Add(apiClient);
            application.Profiles.Add(profile);

            Save(vendor, user, profile, application);

            var orignalKey     = apiClient.Key;
            var originalSecret = apiClient.Secret;

            //Simulate the automatic hashing performed by using the key/secret on the API.
            Transaction(usersContext =>
            {
                var odsSideApiClient            = usersContext.Clients.Single(c => c.ApiClientId == apiClient.ApiClientId);
                odsSideApiClient.Secret         = "SIMULATED HASH OF " + originalSecret;
                odsSideApiClient.SecretIsHashed = true;
            });

            RegenerateApiClientSecretResult result = null;

            Scoped <IUsersContext>(usersContext =>
            {
                var command = new RegenerateApiClientSecretCommand(usersContext);
                result      = command.Execute(application.ApplicationId);
            });

            var updatedApiClient = Transaction(usersContext => usersContext.Clients.Single(c => c.ApiClientId == apiClient.ApiClientId));

            result.Key.ShouldBe(orignalKey);
            result.Secret.ShouldNotBe(originalSecret);
            result.Secret.ShouldNotBe("SIMULATED HASH OF " + originalSecret);
            result.Secret.ShouldNotBeEmpty();

            updatedApiClient.Key.ShouldBe(result.Key);
            updatedApiClient.Secret.ShouldBe(result.Secret);
            updatedApiClient.SecretIsHashed.ShouldBe(false);
        }