Skip to content

Commit 3090231

Browse files
committed
Starting to refactor and introduce a blob storage repository
--HG-- branch : azure-storage
1 parent 81c38b5 commit 3090231

23 files changed

+234
-76
lines changed

src/FunnelWeb.Azure/ServiceConfiguration.Cloud.cscfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<Setting name="funnelweb.configuration.authentication.username" value="test" />
99
<Setting name="funnelweb.configuration.authentication.password" value="test" />
1010
<Setting name="funnelweb.configuration.database.provider" value="sql" />
11+
<Setting name="StorageConnectionString" value="" />
1112
</ConfigurationSettings>
1213
</Role>
1314
</ServiceConfiguration>

src/FunnelWeb.Azure/ServiceConfiguration.Local.cscfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<Setting name="funnelweb.configuration.authentication.username" value="test" />
99
<Setting name="funnelweb.configuration.authentication.password" value="test" />
1010
<Setting name="funnelweb.configuration.database.provider" value="sql" />
11+
<Setting name="StorageConnectionString" value="UseDevelopmentStorage=true" />
1112
</ConfigurationSettings>
1213
</Role>
1314
</ServiceConfiguration>

src/FunnelWeb.Azure/ServiceDefinition.build.csdef

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
<Setting name="funnelweb.configuration.authentication.username" />
2828
<Setting name="funnelweb.configuration.authentication.password" />
2929
<Setting name="funnelweb.configuration.database.provider" />
30+
<Setting name="StorageConnectionString" />
3031
</ConfigurationSettings>
32+
<LocalResources></LocalResources>
3133
</WebRole>
3234
</ServiceDefinition>

src/FunnelWeb.Azure/ServiceDefinition.csdef

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
<Setting name="funnelweb.configuration.authentication.username" />
2020
<Setting name="funnelweb.configuration.authentication.password" />
2121
<Setting name="funnelweb.configuration.database.provider" />
22+
<Setting name="StorageConnectionString" />
2223
</ConfigurationSettings>
24+
<LocalResources>
25+
</LocalResources>
2326
</WebRole>
2427
</ServiceDefinition>

src/FunnelWeb.Tests/Core/Repositories/FileRepositoryTests.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@
22
using System.Web;
33
using FunnelWeb.Model.Repositories.Internal;
44
using FunnelWeb.Settings;
5+
using FunnelWeb.Utilities;
56
using NSubstitute;
67
using NUnit.Framework;
78

89
namespace FunnelWeb.Tests.Core.Repositories
910
{
1011
public class FileRepositoryTests
1112
{
13+
private readonly IMimeTypeLookup mimeTypeLookup;
14+
15+
public FileRepositoryTests()
16+
{
17+
mimeTypeLookup = Substitute.For<IMimeTypeLookup>();
18+
}
19+
1220
[Test]
1321
public void RelativePaths()
1422
{
@@ -18,7 +26,7 @@ public void RelativePaths()
1826
var settings = Substitute.For<ISettingsProvider>();
1927
settings.GetSettings<FunnelWebSettings>().Returns(new FunnelWebSettings { UploadPath = "~/Temp" });
2028

21-
new FileRepository(settings, server);
29+
new FileRepository(settings, server, mimeTypeLookup);
2230

2331
//Act
2432

@@ -34,7 +42,7 @@ public void AbsolutePaths()
3442
var settings = Substitute.For<ISettingsProvider>();
3543
settings.GetSettings<FunnelWebSettings>().Returns(new FunnelWebSettings { UploadPath = "C:\\Temp" });
3644

37-
new FileRepository(settings, server);
45+
new FileRepository(settings, server, mimeTypeLookup);
3846

3947
//Act
4048

src/FunnelWeb.Tests/Helpers/SqlCeTemporaryDatabase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ public string Schema
9090
set { }
9191
}
9292

93+
public string ReadOnlyReason { get; set; }
94+
9395
public AdHocSqlRunner AdHoc
9496
{
9597
get { return database; }

src/FunnelWeb.Tests/LifetimeJustifications.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using FunnelWeb.Repositories;
1717
using FunnelWeb.Settings;
1818
using FunnelWeb.Tasks;
19+
using FunnelWeb.Utilities;
1920
using FunnelWeb.Web.Application.Authentication;
2021
using FunnelWeb.Web.Application.Mime;
2122
using FunnelWeb.Web.Application.Mvc;

src/FunnelWeb.Tests/Web/Areas/Admin/Controllers/UploadControllerTests.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using System.Web.Mvc;
44
using FunnelWeb.Model.Repositories;
55
using FunnelWeb.Tests.Web.Controllers;
6-
using FunnelWeb.Web.Application.Mime;
6+
using FunnelWeb.Utilities;
77
using FunnelWeb.Web.Application.Mvc;
88
using FunnelWeb.Web.Areas.Admin.Controllers;
99
using NSubstitute;
@@ -61,11 +61,8 @@ public void Upload()
6161

6262
var upload = new FileUpload(file);
6363

64-
FileRepository.MapPath(Arg.Any<string>()).Returns("path");
65-
6664
var result = (RedirectToRouteResult)Controller.Upload("path", false, upload);
6765

68-
FileRepository.Received().MapPath(Arg.Is("path"));
6966
FileRepository.Received().Save(Arg.Is<Stream>(stream), Arg.Is("path"), Arg.Is(false));
7067

7168
Assert.That(result.RouteValues["Action"], Is.EqualTo("Index"));
@@ -81,11 +78,8 @@ public void UploadAndUnzip()
8178

8279
var upload = new FileUpload(file);
8380

84-
FileRepository.MapPath(Arg.Any<string>()).Returns("path");
85-
8681
var result = (RedirectToRouteResult)Controller.Upload("path", true, upload);
8782

88-
FileRepository.Received().MapPath(Arg.Is("path"));
8983
FileRepository.Received().Save(Arg.Is<Stream>(stream), Arg.Is("path"), Arg.Is(true));
9084

9185
Assert.That(result.RouteValues["Action"], Is.EqualTo("Index"));
@@ -115,7 +109,6 @@ public void Delete()
115109
public void RenderExistingFile()
116110
{
117111
FileRepository.IsFile(Arg.Is("file")).Returns(true);
118-
FileRepository.MapPath(Arg.Is("file")).Returns("file");
119112

120113
MimeTypeLookup.GetMimeType(Arg.Any<string>()).Returns("mime-type");
121114

@@ -136,7 +129,6 @@ public void Return404OnMissingFile()
136129
var result = Controller.Render("file");
137130

138131
FileRepository.Received().IsFile(Arg.Is("file"));
139-
FileRepository.DidNotReceive().MapPath(Arg.Any<string>());
140132
MimeTypeLookup.DidNotReceive().GetMimeType(Arg.Any<string>());
141133

142134
Assert.IsInstanceOf(typeof (HttpNotFoundResult), result);

src/FunnelWeb.Tests/Web/Model/Repositories/FileRepositoryTests.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,36 @@
11
using System.Web;
22
using FunnelWeb.Model.Repositories.Internal;
33
using FunnelWeb.Settings;
4+
using FunnelWeb.Utilities;
45
using NSubstitute;
56
using NUnit.Framework;
67

78
namespace FunnelWeb.Tests.Web.Model.Repositories
89
{
910
public class FileRepositoryTests
1011
{
12+
private readonly IMimeTypeLookup mimeTypeLookup;
13+
14+
public FileRepositoryTests()
15+
{
16+
mimeTypeLookup = Substitute.For<IMimeTypeLookup>();
17+
}
18+
1119
[Test]
1220
public void RelativePaths()
1321
{
1422
//Arrange
1523
var server = Substitute.For<HttpServerUtilityBase>();
16-
server.MapPath(Arg.Is<string>("~/Temp")).Returns("C:\\Temp");
24+
server.MapPath(Arg.Is("~/Temp")).Returns("C:\\Temp");
1725
var settings = Substitute.For<ISettingsProvider>();
1826
settings.GetSettings<FunnelWebSettings>().Returns(new FunnelWebSettings { UploadPath = "~/Temp" });
1927

20-
var fileRepo = new FileRepository(settings, server);
28+
new FileRepository(settings, server, mimeTypeLookup);
2129

2230
//Act
2331

2432
//Assert
25-
server.Received().MapPath(Arg.Is<string>("~/Temp"));
33+
server.Received().MapPath(Arg.Is("~/Temp"));
2634
}
2735

2836
[Test]
@@ -32,8 +40,8 @@ public void AbsolutePaths()
3240
var server = Substitute.For<HttpServerUtilityBase>();
3341
var settings = Substitute.For<ISettingsProvider>();
3442
settings.GetSettings<FunnelWebSettings>().Returns(new FunnelWebSettings { UploadPath = "C:\\Temp" });
35-
36-
var fileRepo = new FileRepository(settings, server);
43+
44+
new FileRepository(settings, server, mimeTypeLookup);
3745

3846
//Act
3947

src/FunnelWeb.Web/Application/MetaWeblog/MetaWeblog.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,11 +214,10 @@ public MediaObjectInfo NewMediaObject(string blogid, string username, string pas
214214
using (var memoryStream = new MemoryStream(mediaObject.bits))
215215
{
216216
var fileName = Path.GetFileNameWithoutExtension(mediaObject.name) + "_" + DateTime.Now.Ticks + Path.GetExtension(mediaObject.name);
217-
var fullPath = fileRepository.MapPath(fileName);
218217

219218
objectInfo.url = VirtualPathUtility.ToAbsolute(funnelWebSettings.UploadPath + "/" + fileName);
220219

221-
fileRepository.Save(memoryStream, fullPath, false);
220+
fileRepository.Save(memoryStream, fileName, false);
222221
}
223222

224223
return objectInfo;

0 commit comments

Comments
 (0)