public void BatchReaderStreamBoundaryHeaderValidationTest() { IEnumerable <BoundaryHeaderValidationTestCase> testCases = new BoundaryHeaderValidationTestCase[] { new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with the boundary parameter missing.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("MediaTypeUtils_BoundaryMustBeSpecifiedForBatchPayloads", "multipart/mixed", "boundary"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with an invalid boundary parameter name.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary2=changeset_boundary") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("MediaTypeUtils_BoundaryMustBeSpecifiedForBatchPayloads", "multipart/mixed;boundary2=changeset_boundary", "boundary"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with two boundary parameters.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=changeset_boundary;boundary=another_boundary") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("MediaTypeUtils_BoundaryMustBeSpecifiedForBatchPayloads", "multipart/mixed;boundary=changeset_boundary;boundary=another_boundary", "boundary"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with an empty boundary.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("ValidationUtils_InvalidBatchBoundaryDelimiterLength", string.Empty, "70"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with multiple parameters (incl. a boundary).", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;a=b;boundary=my_boundary;c=d") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary" }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header where the boundary parameter name has weird casing.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;a=b;BoUnDaRY=my_boundary;c=d") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary" }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part with multiple headers.", PayloadFunc = builder => builder .Header("a", "b") .Header("Content-Type", "multipart/mixed;boundary=my_boundary") .Header("c", "d") .Header("e", "f") .LineFeed() .String("Some payload") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary", }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part with an invalid header.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=my_boundary") .String("InvalidHeader Does not use a colon!") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary", ExpectedException = ODataExpectedExceptions.ODataException("ODataBatchReaderStream_InvalidHeaderSpecified", "InvalidHeader Does not use a colon!"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part with duplicate headers.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=my_boundary") .Header("a", "b") .Header("a", "c") .LineFeed() .String("Some payload") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary", ExpectedException = ODataExpectedExceptions.ODataException("ODataBatchReaderStream_DuplicateHeaderFound", "a"), }, }; this.CombinatorialEngineProvider.RunCombinations( testCases, (testCase) => { this.Injector.InjectDependenciesInto(testCase); testCase.Run(); }); }
public void BatchReaderStreamBoundaryHeaderValidationTest() { IEnumerable<BoundaryHeaderValidationTestCase> testCases = new BoundaryHeaderValidationTestCase[] { new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with the boundary parameter missing.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("MediaTypeUtils_BoundaryMustBeSpecifiedForBatchPayloads", "multipart/mixed", "boundary"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with an invalid boundary parameter name.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary2=changeset_boundary") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("MediaTypeUtils_BoundaryMustBeSpecifiedForBatchPayloads", "multipart/mixed;boundary2=changeset_boundary", "boundary"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with two boundary parameters.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=changeset_boundary;boundary=another_boundary") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("MediaTypeUtils_BoundaryMustBeSpecifiedForBatchPayloads", "multipart/mixed;boundary=changeset_boundary;boundary=another_boundary", "boundary"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with an empty boundary.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=") .ResetMemoryStream(), ExpectedException = ODataExpectedExceptions.ODataException("ValidationUtils_InvalidBatchBoundaryDelimiterLength", string.Empty, "70"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header with multiple parameters (incl. a boundary).", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;a=b;boundary=my_boundary;c=d") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary" }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part header where the boundary parameter name has weird casing.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;a=b;BoUnDaRY=my_boundary;c=d") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary" }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part with multiple headers.", PayloadFunc = builder => builder .Header("a", "b") .Header("Content-Type", "multipart/mixed;boundary=my_boundary") .Header("c", "d") .Header("e", "f") .LineFeed() .String("Some payload") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary", }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part with an invalid header.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=my_boundary") .String("InvalidHeader Does not use a colon!") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary", ExpectedException = ODataExpectedExceptions.ODataException("ODataBatchReaderStream_InvalidHeaderSpecified", "InvalidHeader Does not use a colon!"), }, new BoundaryHeaderValidationTestCase { DebugDescription = "Read a changeset part with duplicate headers.", PayloadFunc = builder => builder .Header("Content-Type", "multipart/mixed;boundary=my_boundary") .Header("a", "b") .Header("a", "c") .LineFeed() .String("Some payload") .ResetMemoryStream(), ExpectChangeSetPart = true, ExpectedChangeSetBoundary = "my_boundary", ExpectedException = ODataExpectedExceptions.ODataException("ODataBatchReaderStream_DuplicateHeaderFound", "a"), }, }; this.CombinatorialEngineProvider.RunCombinations( testCases, (testCase) => { this.Injector.InjectDependenciesInto(testCase); testCase.Run(); }); }