public HttpResponseMessage GetBlogMlExport()
        {
            //save to Temp folder (base path)
            var fs = new PhysicalFileSystem("~/App_Data/Temp/Articulate");
            var fileStream = fs.OpenFile("BlogMlExport.xml");

            var result = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StreamContent(fileStream)
            };
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = "BlogMlExport.xml"
            };
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            return result;
        }
        public void Can_Read_And_Deserialize_Macro_From_Disc()
        {
            // Arrange
            var serviceStackSerializer = new ServiceStackJsonSerializer();
            var serializationService = new SerializationService(serviceStackSerializer);
			var fileSystem = new PhysicalFileSystem("~/App_Data/Macros");

            var macro = new Macro
                            {
                                Alias = "test",
                                CacheByPage = false,
                                CacheByMember = false,
                                DontRender = true,
                                Name = "Test",
                                Xslt = "/xslt/testMacro.xslt",
                                UseInEditor = false
                            };

            macro.Properties = new List<IMacroProperty>();
            macro.Properties.Add(new MacroProperty { Alias = "level", Name = "Level", SortOrder = 0, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Number() });
            macro.Properties.Add(new MacroProperty { Alias = "fixedTitle", Name = "Fixed Title", SortOrder = 1, PropertyType = new Umbraco.Core.Macros.PropertyTypes.Text() });

            // Act
            var json = serializationService.ToStream(macro);
            string jsonString = json.ResultStream.ToJsonString();
            fileSystem.AddFile("test-serialized-Macro.macro", json.ResultStream, true);

            Stream stream = fileSystem.OpenFile("test-serialized-Macro.macro");
            object o = serializationService.FromStream(stream, typeof(Macro));
            var deserialized = o as IMacro;

            // Assert
            Assert.That(json.Success, Is.True);
            Assert.That(jsonString, Is.Not.Empty);
            Assert.That(fileSystem.FileExists("test-serialized-Macro.macro"), Is.True);
            Assert.That(deserialized, Is.Not.Null);
            Assert.That(deserialized.Name, Is.EqualTo(macro.Name));
            Assert.That(deserialized.Alias, Is.EqualTo(macro.Alias));
        }