public void InStreamErrorInEntriesTest() { EdmModel edmModel = new EdmModel(); EdmEntityContainer defaultContainer = new EdmEntityContainer("TestModel", "DefaultContainer"); edmModel.AddElement(defaultContainer); var dummyType = new EdmEntityType("TestModel", "DummyEntryType"); dummyType.AddKeys(dummyType.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(/*isNullable*/false))); edmModel.AddElement(dummyType); var dummySet = defaultContainer.AddEntitySet("DummySet", dummyType); var errorCases = new [] { new { Json = "{{ \"{0}\": {{ \"code\": \"my-error-code\" }} }}", ExpectedException = ODataExpectedExceptions.ODataErrorException(new ODataError { ErrorCode = "my-error-code" }) }, new { Json = "{{ \"{0}\": {{ \"message\": \"my-error-message\" }} }}", ExpectedException = ODataExpectedExceptions.ODataErrorException(new ODataError { Message = "my-error-message" }) }, new { Json = "{{ \"{0}\": {{ \"code\": \"my-error-code\", \"message\": \"my-error-message\" }} }}", ExpectedException = ODataExpectedExceptions.ODataErrorException(new ODataError { ErrorCode = "my-error-code", Message = "my-error-message" }) }, new { Json = "{{ \"{0}\": {{ \"code\": \"my-error-code\", \"innererror\": {{ \"message\": \"my-inner-error\" }} }} }}", ExpectedException = ODataExpectedExceptions.ODataErrorException(new ODataError { ErrorCode = "my-error-code", InnerError = new ODataInnerError { Message = "my-inner-error" }}) }, new { Json = "{{ \"{0}\": {{ \"innererror\": {{ \"message\": \"my-inner-error\" }} }} }}", ExpectedException = ODataExpectedExceptions.ODataErrorException(new ODataError {InnerError = new ODataInnerError { Message = "my-inner-error" }}) }, new { Json = "{{ \"{0}\": {{ \"message\": \"my-error-message\", \"innererror\": {{ \"message\": \"my-inner-error\" }} }} }}", ExpectedException = ODataExpectedExceptions.ODataErrorException(new ODataError { Message = "my-error-message", InnerError = new ODataInnerError { Message = "my-inner-error" }}) }, new { Json = "{{ \"{0}\": {{ \"code\": \"my-error-code\", \"message\": \"my-error-message\", \"innererror\": {{ \"message\": \"my-inner-error\" }} }} }}", ExpectedException = ODataExpectedExceptions.ODataErrorException(new ODataError { ErrorCode = "my-error-code", Message = "my-error-message", InnerError = new ODataInnerError { Message = "my-inner-error" }}) }, }; this.CombinatorialEngineProvider.RunCombinations( errorCases, this.ReaderTestConfigurationProvider.JsonLightFormatConfigurations, (errorCase, testConfiguration) => { string errorElementName = JsonLightConstants.ODataErrorPropertyName; var testCase = new JsonPayloadErrorTestCase { Json = PayloadBuilder.Entity("TestModel.DummyEntryType") .JsonRepresentation(string.Format(errorCase.Json, errorElementName)) .ExpectedEntityType(dummyType, dummySet), EdmModel = edmModel, ExpectedExceptionFunc = (tCase, tConfig) => errorCase.ExpectedException, }; var descriptor = testCase.ToEdmPayloadReaderTestDescriptor(this.PayloadTestDescriptorSettings, this.PayloadExpectedResultSettings); // NOTE: payload generation is not supported for JSON Light yet var descriptors = testConfiguration.Format == ODataFormat.Json ? new PayloadReaderTestDescriptor[] { descriptor } : this.PayloadGenerator.GenerateReaderPayloads(descriptor); this.CombinatorialEngineProvider.RunCombinations( descriptors, testDescriptor => testDescriptor.RunTest(testConfiguration)); }); }
/// <summary> /// Copy constructor. /// </summary> /// <param name="other">The <see cref="JsonPayloadErrorTestCase"/> to clone.</param> public JsonPayloadErrorTestCase(JsonPayloadErrorTestCase other) { this.Json = other.Json; this.EdmModel = other.EdmModel; this.ExpectedExceptionFunc = other.ExpectedExceptionFunc; }