public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding) { if (context == null) { throw new ArgumentNullException(nameof(context)); } string callback; if (IsJsonpRequest(context.HttpContext.Request, _callbackQueryParameter, out callback)) { if (!CallbackValidator.IsValid(callback)) { throw new InvalidOperationException($"Callback '{callback}' is invalid!"); } using (var writer = context.WriterFactory(context.HttpContext.Response.Body, selectedEncoding)) { // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse" // the typeof check is just to reduce client error noise var str = "/**/ typeof " + callback + " === 'function' && " + callback + "("; str += context.Object + ");"; writer.Write("/**/ typeof " + callback + " === 'function' && " + callback + "("); writer.Flush(); _jsonMediaTypeFormatter.WriteObject(writer, context.Object); writer.Write(");"); await writer.FlushAsync(); } } else { await _jsonMediaTypeFormatter.WriteResponseBodyAsync(context, selectedEncoding); } }
public void CanValidate() { CallbackValidator v = new CallbackValidator(typeof(int), success); Assert.False(v.CanValidate(typeof(string))); Assert.True(v.CanValidate(typeof(int))); Assert.False(v.CanValidate(typeof(object))); }
public void TestSuccess() { hit_success = false; CallbackValidator v = new CallbackValidator(typeof(int), success); v.Validate(5); Assert.True(hit_success, "A1"); }
public void TestFailure2() { hit_failure = false; CallbackValidator v = new CallbackValidator(typeof(int), failure); try { v.Validate(5); } catch { } finally { Assert.IsTrue(hit_failure, "A1"); } }
public PasswordUpdateDialogViewModel(IValidate <SecureString> originalValidator, IValidate <SecureString> confirmValidator) { SuccessEnableCallback = defaultEnable => (Password.HasErrors || ConfirmPassword.HasErrors) == false; Password.Validator = originalValidator; if (confirmValidator is NullValidator <SecureString> ) { confirmValidator = new CallbackValidator <SecureString>(o => Password.Password.Length != 0 && Perform.SecureStringCompare(Password.Password, ConfirmPassword.Password) ? new OperationResult() : new OperationResult(new[] { new ValidationFailedException("Both fields must match.") }) ); } ConfirmPassword.Validator = confirmValidator; Password.PropertyChanged += Password_PropertyChanged; ConfirmPassword.PropertyChanged += Password_PropertyChanged; Password.RunValidation(); ConfirmPassword.RunValidation(); }
public void TestFailure1() { CallbackValidator v = new CallbackValidator(typeof(int), failure); Assert.Throws <Exception>(() => v.Validate(5)); }
public void NullType() { CallbackValidator v = new CallbackValidator(null, success); }
public void NullCallback() { CallbackValidator v = new CallbackValidator(typeof(int), null); }
public void IsValid(string callback, bool isValid) { Assert.That(CallbackValidator.IsValid(callback), Is.EqualTo(isValid)); }
public void TestFailure1() { CallbackValidator v = new CallbackValidator(typeof(int), failure); v.Validate(5); }