public void ShouldNotAllowEmptyBulkLoadCredentials()
        {
            var saveBulkUploadCredentialsModel = new SaveBulkUploadCredentialsModel
            {
                ApiKey    = "",
                ApiSecret = ""
            };

            var instanceContext = new InstanceContext
            {
                Id   = 1,
                Name = "Test Instance"
            };

            Scoped <IUsersContext>(usersContext =>
            {
                var validator         = new SaveBulkUploadCredentialsModelValidator(usersContext, instanceContext);
                var validationResults = validator.Validate(saveBulkUploadCredentialsModel);
                validationResults.IsValid.ShouldBe(false);
                validationResults.Errors.Select(x => x.ErrorMessage).ShouldBe(new List <string>
                {
                    "'Api Key' must not be empty.",
                    "'Api Secret' must not be empty."
                });
            });
        }
        public void ShouldNotAllowBulkLoadCredentialsFromADifferentInstance()
        {
            var odsInstance1 = new OdsInstance
            {
                Name         = "Test Instance 1",
                InstanceType = "Ods",
                IsExtended   = false,
                Status       = "OK",
                Version      = "1.0.0"
            };

            var apiClientForInstance1 = SetupApplicationForInstance(odsInstance1);

            var odsInstance2 = new OdsInstance
            {
                Name         = "Test Instance 2",
                InstanceType = "Ods",
                IsExtended   = false,
                Status       = "OK",
                Version      = "1.0.0"
            };

            SetupApplicationForInstance(odsInstance2);

            var saveBulkUploadCredentialsModel = new SaveBulkUploadCredentialsModel
            {
                ApiKey    = apiClientForInstance1.Key,
                ApiSecret = apiClientForInstance1.Secret
            };

            var instanceContext = new InstanceContext
            {
                Id   = odsInstance2.OdsInstanceId,
                Name = odsInstance2.Name
            };

            Scoped <IUsersContext>(usersContext =>
            {
                var validator         = new SaveBulkUploadCredentialsModelValidator(usersContext, instanceContext);
                var validationResults = validator.Validate(saveBulkUploadCredentialsModel);
                validationResults.IsValid.ShouldBe(false);
                validationResults.Errors.Select(x => x.ErrorMessage).ShouldContain("The Api Key provided is not associated with the currently selected ODS instance.");
            });
        }
        public void ShouldAllowBulkLoadCredentialsFromTheSameInstance()
        {
            var odsInstance1 = new OdsInstance
            {
                Name         = "Test Instance 1",
                InstanceType = "Ods",
                IsExtended   = false,
                Status       = "OK",
                Version      = "1.0.0"
            };

            var apiClientForInstance1 = SetupApplicationForInstance(odsInstance1);

            var odsInstance2 = new OdsInstance
            {
                Name         = "Test Instance 2",
                InstanceType = "Ods",
                IsExtended   = false,
                Status       = "OK",
                Version      = "1.0.0"
            };

            SetupApplicationForInstance(odsInstance2);

            var saveBulkUploadCredentialsModel = new SaveBulkUploadCredentialsModel
            {
                ApiKey    = apiClientForInstance1.Key,
                ApiSecret = apiClientForInstance1.Secret
            };

            var instanceContext = new InstanceContext
            {
                Id   = odsInstance1.OdsInstanceId,
                Name = odsInstance1.Name
            };

            Scoped <IUsersContext>(usersContext =>
            {
                var validator         = new SaveBulkUploadCredentialsModelValidator(usersContext, instanceContext);
                var validationResults = validator.Validate(saveBulkUploadCredentialsModel);
                validationResults.IsValid.ShouldBe(true);
            });
        }