public void ServiceDocumentErrorTests() { IEdmModel model = this.CreateMetadata(new[] { new CollectionInfo() { Url = "EntitySet1" }, new CollectionInfo() { Url = "EntitySet2" } }); var testCases = new[] { new { // relative uri without any base Uri Workspace = new Func <ODataServiceDocument>(() => { var defaultWorkspace = ObjectModelUtils.CreateDefaultWorkspace(); defaultWorkspace.EntitySets = new ODataEntitySetInfo[] { new ODataEntitySetInfo() { Url = new Uri("SomeUri", UriKind.Relative) } }; return(defaultWorkspace); })(), MessageWriterSettings = (ODataMessageWriterSettings)null, ExpectedException = ODataExpectedExceptions.ODataException("ODataWriter_RelativeUriUsedWithoutBaseUriSpecified", "SomeUri"), Model = (IEdmModel)null, OnlyForFormat = ODataFormat.Atom }, new { // empty relative uri without any base Uri Workspace = new Func <ODataServiceDocument>(() => { var defaultWorkspace = ObjectModelUtils.CreateDefaultWorkspace(); defaultWorkspace.EntitySets = new ODataEntitySetInfo[] { new ODataEntitySetInfo() { Url = new Uri(string.Empty, UriKind.Relative) } }; return(defaultWorkspace); })(), MessageWriterSettings = (ODataMessageWriterSettings)null, ExpectedException = ODataExpectedExceptions.ODataException("ODataWriter_RelativeUriUsedWithoutBaseUriSpecified", string.Empty), Model = (IEdmModel)null, OnlyForFormat = ODataFormat.Atom }, new { // empty collection name Workspace = new Func <ODataServiceDocument>(() => { var defaultWorkspace = ObjectModelUtils.CreateDefaultWorkspace(); defaultWorkspace.EntitySets = new ODataEntitySetInfo[] { new ODataEntitySetInfo() { Url = null } }; return(defaultWorkspace); })(), MessageWriterSettings = settingsWithBaseUri, ExpectedException = ODataExpectedExceptions.ODataException("ValidationUtils_ResourceMustSpecifyUrl"), Model = (IEdmModel)null, OnlyForFormat = (ODataFormat)null }, new { // null collection Workspace = new Func <ODataServiceDocument>(() => { var defaultWorkspace = ObjectModelUtils.CreateDefaultWorkspace(); defaultWorkspace.EntitySets = new ODataEntitySetInfo[] { null }; return(defaultWorkspace); })(), MessageWriterSettings = settingsWithBaseUri, ExpectedException = ODataExpectedExceptions.ODataException("ValidationUtils_WorkspaceResourceMustNotContainNullItem"), Model = (IEdmModel)null, OnlyForFormat = (ODataFormat)null }, new { // no serviceDocument Workspace = (ODataServiceDocument)null, MessageWriterSettings = settingsWithBaseUri, ExpectedException = new ExpectedException(typeof(ArgumentNullException)), Model = (IEdmModel)null, OnlyForFormat = (ODataFormat)null }, }; var testDescriptors = testCases.Select(tc => new PayloadWriterTestDescriptor <WorkspaceWithSettings>( this.Settings, new WorkspaceWithSettings() { ServiceDocument = tc.Workspace, WriterSettings = tc.MessageWriterSettings }, CreateErrorResultCallback(tc.ExpectedException, tc.OnlyForFormat, this.Settings.ExpectedResultSettings)) { Model = tc.Model, }); this.CombinatorialEngineProvider.RunCombinations( testDescriptors, this.WriterTestConfigurationProvider.ExplicitFormatConfigurationsWithIndent, (testDescriptor, testConfig) => { testConfig = testConfig.Clone(); testConfig.MessageWriterSettings.SetServiceDocumentUri(ServiceDocumentUri); WorkspaceWithSettings docWithSettings = testDescriptor.PayloadItems.Single(); if (docWithSettings.WriterSettings != null) { docWithSettings.WriterSettings.DisableMessageStreamDisposal = testConfig.MessageWriterSettings.DisableMessageStreamDisposal; docWithSettings.WriterSettings.SetServiceDocumentUri(ServiceDocumentUri); } TestWriterUtils.WriteAndVerifyTopLevelContent( testDescriptor, testConfig, (messageWriter) => messageWriter.WriteServiceDocument(docWithSettings.ServiceDocument), this.Assert, docWithSettings.WriterSettings, baselineLogger: this.Logger); }); }
public void AdditionalResourceCollectionTests() { IEdmModel model = this.CreateMetadata(new[] { new CollectionInfo { Url = "EntitySet1" }, new CollectionInfo { Url = "EntitySet2" } }); IEdmEntityType entityType = (IEdmEntityType)model.FindType("TestNS.EntityType"); var testCases = new[] { // duplicate resource collection name new { Collections = new [] { new CollectionInfo { Url = "A" }, new CollectionInfo { Url = "A" } }, Model = (IEdmModel)null, }, // resource collection name does not match metadata. new { Collections = new [] { new CollectionInfo { Url = "SomeName" } }, Model = model, }, }; var testDescriptors = testCases.Select(tc => new PayloadWriterTestDescriptor <WorkspaceWithSettings>( this.Settings, new WorkspaceWithSettings() { ServiceDocument = CreateWorkspace(/*createMetadataFirst*/ false, null, tc.Collections), }, CreateExpectedResultCallback(baseUri, null, tc.Collections)) { Model = tc.Model, }); this.CombinatorialEngineProvider.RunCombinations( testDescriptors, this.WriterTestConfigurationProvider.ExplicitFormatConfigurationsWithIndent, (testDescriptor, testConfig) => { WorkspaceWithSettings docWithSettings = testDescriptor.PayloadItems.Single(); if (docWithSettings.WriterSettings != null) { docWithSettings.WriterSettings.DisableMessageStreamDisposal = testConfig.MessageWriterSettings.DisableMessageStreamDisposal; } WriterTestConfiguration newConfiguration = testConfig.Clone(); newConfiguration.MessageWriterSettings.PayloadBaseUri = new Uri(baseUri); newConfiguration.MessageWriterSettings.SetServiceDocumentUri(ServiceDocumentUri); TestWriterUtils.WriteAndVerifyTopLevelContent( testDescriptor, newConfiguration, (messageWriter) => messageWriter.WriteServiceDocument(docWithSettings.ServiceDocument), this.Assert, docWithSettings.WriterSettings, baselineLogger: this.Logger); }); }