Merge lp:~mandel/ubuntuone-windows-installer/add_load_preferences_test into lp:ubuntuone-windows-installer/beta

Proposed by Manuel de la Peña
Status: Merged
Approved by: John Lenton
Approved revision: 101
Merged at revision: 133
Proposed branch: lp:~mandel/ubuntuone-windows-installer/add_load_preferences_test
Merge into: lp:ubuntuone-windows-installer/beta
Diff against target: 237 lines (+158/-8)
6 files modified
src/Canonical.UbuntuOne.Client.Test/Canonical.UbuntuOne.Client.Test.csproj (+5/-0)
src/Canonical.UbuntuOne.Client.Test/Preferences/LoadPreferencesStartupTaskFixture.cs (+149/-0)
src/Canonical.UbuntuOne.Client/Preferences/LoadPreferencesStartupTask.cs (+2/-2)
src/UbuntuOneClient/App.config (+1/-1)
src/UbuntuOneClient/Program.cs (+0/-3)
src/UbuntuOneClient/objects.xml (+1/-2)
To merge this branch: bzr merge lp:~mandel/ubuntuone-windows-installer/add_load_preferences_test
Reviewer Review Type Date Requested Status
John Lenton (community) Approve
Review via email: mp+40632@code.launchpad.net

Description of the change

Adds extra testing for the load preferences startup task.

To post a comment you must log in.
101. By Manuel de la Peña

Added forgoten dir.

Revision history for this message
John Lenton (chipaca) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/Canonical.UbuntuOne.Client.Test/Canonical.UbuntuOne.Client.Test.csproj'
2--- src/Canonical.UbuntuOne.Client.Test/Canonical.UbuntuOne.Client.Test.csproj 2010-10-12 13:07:02 +0000
3+++ src/Canonical.UbuntuOne.Client.Test/Canonical.UbuntuOne.Client.Test.csproj 2010-11-12 14:14:32 +0000
4@@ -87,9 +87,14 @@
5 <Compile Include="Notification\OperationCompletenessEventArgsFixture.cs" />
6 <Compile Include="Notification\RecentlyModifiedEventArgsFixture.cs" />
7 <Compile Include="Notification\StateEventArgsFixture.cs" />
8+ <Compile Include="Preferences\LoadPreferencesStartupTaskFixture.cs" />
9 <Compile Include="Properties\AssemblyInfo.cs" />
10 </ItemGroup>
11 <ItemGroup>
12+ <ProjectReference Include="..\Canonical.Ubuntu.SSO\Canonical.Ubuntu.SSO.csproj">
13+ <Project>{9460A771-2589-45DA-9618-9FE8BB7D16E8}</Project>
14+ <Name>Canonical.Ubuntu.SSO</Name>
15+ </ProjectReference>
16 <ProjectReference Include="..\Canonical.UbuntuOne.Client\Canonical.UbuntuOne.Client.csproj">
17 <Project>{7467483A-D6D5-4362-8DF4-57A7254EB569}</Project>
18 <Name>Canonical.UbuntuOne.Client</Name>
19
20=== added directory 'src/Canonical.UbuntuOne.Client.Test/Preferences'
21=== added file 'src/Canonical.UbuntuOne.Client.Test/Preferences/LoadPreferencesStartupTaskFixture.cs'
22--- src/Canonical.UbuntuOne.Client.Test/Preferences/LoadPreferencesStartupTaskFixture.cs 1970-01-01 00:00:00 +0000
23+++ src/Canonical.UbuntuOne.Client.Test/Preferences/LoadPreferencesStartupTaskFixture.cs 2010-11-12 14:14:32 +0000
24@@ -0,0 +1,149 @@
25+/* Copyright 2010 Canonical Ltd.
26+ *
27+ * This file is part of UbuntuOne on Windows.
28+ *
29+ * UbuntuOne on Windows is free software: you can redistribute it and/or modify
30+ * it under the terms of the GNU Lesser General Public License version
31+ * as published by the Free Software Foundation.
32+ *
33+ * Ubuntu One on Windows is distributed in the hope that it will be useful,
34+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
35+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36+ * GNU Lesser General Public License for more details.
37+ *
38+ * You should have received a copy of the GNU Lesser General Public License
39+ * along with UbuntuOne for Windows. If not, see <http://www.gnu.org/licenses/>.
40+ *
41+ * Authors: Manuel de la Peña <manuel.delapena@canonical.com>
42+ */
43+using System.Collections.Generic;
44+using Canonical.Ubuntu.SSO;
45+using Canonical.UbuntuOne.Client.Preferences;
46+using Canonical.UbuntuOne.Common;
47+using NUnit.Framework;
48+using Rhino.Mocks;
49+using Rhino.Mocks.Interfaces;
50+
51+namespace Canonical.UbuntuOne.Client.Test.Preferences
52+{
53+ [TestFixture]
54+ public class LoadPreferencesStartupTaskFixture
55+ {
56+ #region Variables
57+
58+ private ISSOCredentialsProvider _ssoProvider;
59+ private IPreferencesManager _preferencesManager;
60+ private ISyncDaemon _syncdaemon;
61+ private IMessageBox _messageBox;
62+ private MockRepository _mocks;
63+ private LoadPreferencesStartupTask _task;
64+
65+ #endregion
66+
67+ #region Setup
68+
69+ [SetUp]
70+ public void Setup()
71+ {
72+ _mocks = new MockRepository();
73+ _ssoProvider = _mocks.StrictMock<ISSOCredentialsProvider>();
74+ _preferencesManager = _mocks.StrictMock<IPreferencesManager>();
75+ _syncdaemon = _mocks.StrictMock<ISyncDaemon>();
76+ _messageBox = _mocks.StrictMock<IMessageBox>();
77+ _task = new LoadPreferencesStartupTask
78+ {
79+ SSOCredentialsProvider = _ssoProvider,
80+ PreferencesManager = _preferencesManager,
81+ SyncDaemon = _syncdaemon,
82+ MessageBox = _messageBox
83+ };
84+ // we start recording again, the reason is that the assigment of the SSOProvider does
85+ // register the callback used for the events.
86+ _mocks.BackToRecordAll();
87+ }
88+
89+ #endregion
90+
91+ #region Tests
92+
93+ [Test]
94+ public void ExecuteNotAutoSyncEnabledTest()
95+ {
96+ using(_mocks.Record())
97+ {
98+ Expect.Call(_preferencesManager.IsAutoSyncEnable)
99+ .Return(false)
100+ .Repeat.Once();
101+ }
102+ using(_mocks.Playback())
103+ {
104+ // we execute and expect nothing to occur
105+ _task.Exeucte();
106+ }
107+ }
108+
109+ [Test]
110+ public void ExecuteAutoSyncEnabledTest()
111+ {
112+ using (_mocks.Record())
113+ {
114+ Expect.Call(_preferencesManager.IsAutoSyncEnable)
115+ .Return(true)
116+ .Repeat.Once();
117+ Expect.Call(() => _ssoProvider.LoginToGetCredentials(LoadPreferencesStartupTask.EventName,
118+ LoadPreferencesStartupTask.ApplicationName))
119+ .Repeat.Once();
120+ }
121+ using (_mocks.Playback())
122+ {
123+ _task.Exeucte();
124+ }
125+ }
126+
127+ [Test]
128+ public void CredentialsFoundTest()
129+ {
130+ // we reassign the sso provider, so that we test that the events are correctly set,
131+ // then throw an event and esure that the correct operation is performed
132+ var credentials = new Dictionary<string, string>
133+ {
134+ {"Token", "Token"},
135+ {"TokenSecret", "TokenSecret"},
136+ {"ConsumerKey", "ConsumerKey"},
137+ {"ConsumerSecret", "ConsumerSecret"}
138+ };
139+ IEventRaiser onCredentialsFound;
140+ var args = new CredentialsFoundEventArgs(LoadPreferencesStartupTask.EventName, credentials);
141+ using (_mocks.Record())
142+ {
143+ _ssoProvider.OnCredentialsError += null;
144+ LastCall.IgnoreArguments();
145+ _ssoProvider.OnCredentialsFound += null;
146+ onCredentialsFound = LastCall.IgnoreArguments().GetEventRaiser();
147+ _ssoProvider.OnCredetialsDenied += null;
148+ LastCall.IgnoreArguments();
149+ // code expected to execute once the event is raised
150+ Expect.Call(_preferencesManager.AutoSyncFrequency)
151+ .Return(10)
152+ .Repeat.Once();
153+ // TODO: We ougth to either patch RhinoMocks to allo to ignore one param, or create an object to mock that
154+ // will return the path, I'm inclened towards the second option
155+ Expect.Call(() => _syncdaemon.EnableManualSyncAutoExecution(
156+ "",
157+ credentials["Token"],
158+ credentials["TokenSecret"],
159+ credentials["ConsumerKey"],
160+ credentials["ConsumerSecret"], 10))
161+ .IgnoreArguments()
162+ .Repeat.Once();
163+ }
164+ using(_mocks.Playback())
165+ {
166+ _task.SSOCredentialsProvider = _ssoProvider;
167+ onCredentialsFound.Raise(this, args);
168+ }
169+ }
170+
171+ #endregion
172+ }
173+}
174
175=== modified file 'src/Canonical.UbuntuOne.Client/Preferences/LoadPreferencesStartupTask.cs'
176--- src/Canonical.UbuntuOne.Client/Preferences/LoadPreferencesStartupTask.cs 2010-11-11 11:43:38 +0000
177+++ src/Canonical.UbuntuOne.Client/Preferences/LoadPreferencesStartupTask.cs 2010-11-12 14:14:32 +0000
178@@ -34,8 +34,8 @@
179 #region Variables
180
181 private ISSOCredentialsProvider _ssoProvider;
182- private const string EventName = "PreferencesStartupLoad";
183- private const string ApplicationName = "UbuntuOne";
184+ internal const string EventName = "PreferencesStartupLoad";
185+ internal const string ApplicationName = "UbuntuOne";
186 private ILog _logger;
187 private readonly object _loggerLock = new object();
188
189
190=== modified file 'src/UbuntuOneClient/App.config'
191--- src/UbuntuOneClient/App.config 2010-11-10 13:47:12 +0000
192+++ src/UbuntuOneClient/App.config 2010-11-12 14:14:32 +0000
193@@ -29,13 +29,13 @@
194
195 <spring>
196 <context>
197- <resource uri="assembly://UbuntuOneClient/UbuntuOneClient/objects.xml"/>
198 <resource uri="assembly://Canonical.Ubuntu.SSO/Canonical.Ubuntu.SSO/objects.xml"/>
199 <resource uri="assembly://Canonical.Ubuntu.SSO.Views/Canonical.Ubuntu.SSO.Views/objects.xml"/>
200 <resource uri="assembly://Canonical.UbuntuOne.Client/Canonical.UbuntuOne.Client/objects.xml"/>
201 <resource uri="assembly://Canonical.UbuntuOne.Client.Views/Canonical.UbuntuOne.Client.Views/objects.xml"/>
202 <resource uri="assembly://Canonical.UbuntuOne.Common/Canonical.UbuntuOne.Common/objects.xml"/>
203 <resource uri="assembly://Canonical.UbuntuOne.ProcessDispatcher/Canonical.UbuntuOne.ProcessDispatcher/objects.xml"/>
204+ <resource uri="assembly://UbuntuOneClient/UbuntuOneClient/objects.xml"/>
205 </context>
206
207 </spring>
208
209=== modified file 'src/UbuntuOneClient/Program.cs'
210--- src/UbuntuOneClient/Program.cs 2010-10-19 12:34:50 +0000
211+++ src/UbuntuOneClient/Program.cs 2010-11-12 14:14:32 +0000
212@@ -160,9 +160,6 @@
213
214 ObjectsContainer.Initialize(new SpringContainer());
215 var program = ObjectsContainer.GetImplementationOf<Program>();
216- // HACK: This should be done by the IoC and not manually
217- program.Application.StartupTasks.Add(ObjectsContainer.GetImplementationOf<PipeListeningStartupTask>());
218- program.Application.StartupTasks.Add(ObjectsContainer.GetImplementationOf<LoadPreferencesStartupTask>());
219 program.StartApplication();
220
221 }
222
223=== modified file 'src/UbuntuOneClient/objects.xml'
224--- src/UbuntuOneClient/objects.xml 2010-10-19 12:34:50 +0000
225+++ src/UbuntuOneClient/objects.xml 2010-11-12 14:14:32 +0000
226@@ -48,10 +48,9 @@
227 </object>
228
229 <object id="Application"
230- type="UbuntuOneClient.ApplicationWrapper, UbuntuOneClient" >
231+ type="Canonical.UbuntuOne.Common.Utils.ApplicationWrapper, Canonical.UbuntuOne.Common" >
232 <property name="StartupTasks">
233 <list element-type="Canonical.UbuntuOne.Common.Utils.IStartupTask, Canonical.UbuntuOne.Common">
234- <value>1</value>
235 <ref object="PipeListeningStartupTask"/> <!-- task that ensures that we listen to messages from python-->
236 <ref object="LoadPreferencesStartupTask"/> <!-- Load the preferences -->
237 </list>

Subscribers

People subscribed via source and target branches

to all changes: