using OSGeo.MapGuide.Test.Common; using OSGeo.MapGuide.Test.Common.ExternalTests; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace OSGeo.MapGuide.Test.Web.ExternalTests { public class ResourceMetadataTest : IExternalTest { public void Execute(IPlatformFactory factory, ITestLogger logger) { var resSvc = (MgResourceService)factory.CreateService(MgServiceType.ResourceService); var featSvc = (MgFeatureService)factory.CreateService(MgServiceType.FeatureService); var fsId = new MgResourceIdentifier("Library://UnitTests/Data/Metadata.FeatureSource"); try { if (resSvc.ResourceExists(fsId)) resSvc.DeleteResource(fsId); string metadata = resSvc.EnumerateResourceDocuments(null, MgResourceType.FeatureSource, MgResourceHeaderProperties.Metadata); File.WriteAllText("metadata.txt", metadata); string className = FeatureServiceTestUtil.CreateTestDataStore(fsId, "OSGeo.SDF", featSvc); string headerXml = string.Format(Properties.Resources.ResourceHeaderTemplate, "Foo", "Bar"); var bytes = Encoding.UTF8.GetBytes(headerXml); var source = new MgByteSource(bytes, bytes.Length); var rdr = source.GetReader(); resSvc.SetResource(fsId, null, rdr); string metadata2 = resSvc.EnumerateResourceDocuments(null, MgResourceType.FeatureSource, MgResourceHeaderProperties.Metadata); File.WriteAllText("metadata2.txt", metadata2); Assert.IsFalse(metadata == metadata2); } finally { if (resSvc.ResourceExists(fsId)) resSvc.DeleteResource(fsId); } } } public class ResourceModifiedTest : IExternalTest { public void Execute(IPlatformFactory factory, ITestLogger logger) { var resSvc = (MgResourceService)factory.CreateService(MgServiceType.ResourceService); var featSvc = (MgFeatureService)factory.CreateService(MgServiceType.FeatureService); MgResourceIdentifier fsId = new MgResourceIdentifier("Library://UnitTests/Data/Timestamp.FeatureSource"); string className = FeatureServiceTestUtil.CreateTestDataStore(fsId, "OSGeo.SDF", featSvc); MgByteReader content = resSvc.GetResourceContent(fsId); MgDateTime mod1 = resSvc.GetResourceModifiedDate(fsId); Thread.Sleep(1500); resSvc.SetResource(fsId, content, null); MgDateTime mod2 = resSvc.GetResourceModifiedDate(fsId); Assert.IsFalse(mod1.ToString() == mod2.ToString()); } } }