diff --git a/src/console/console.csproj b/src/console/console.csproj
index c04b66d53..52a814b1b 100644
--- a/src/console/console.csproj
+++ b/src/console/console.csproj
@@ -35,12 +35,13 @@
4
-
+
+ False
..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
-
+
False
- ..\packages\SimpleRESTServices.1.0.6.3\lib\net40\SimpleRESTServices.dll
+ ..\packages\SimpleRESTServices.1.0.6.6\lib\net40\SimpleRESTServices.dll
diff --git a/src/console/packages.config b/src/console/packages.config
index 06f77f62c..6566c6481 100644
--- a/src/console/packages.config
+++ b/src/console/packages.config
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/src/corelib/Core/Domain/Volume.cs b/src/corelib/Core/Domain/Volume.cs
index 58abcbfce..7ceedafe3 100644
--- a/src/corelib/Core/Domain/Volume.cs
+++ b/src/corelib/Core/Domain/Volume.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Runtime.Serialization;
namespace net.openstack.Core.Domain
@@ -25,7 +26,7 @@ public class Volume
public string SnapshotId { get; set; }
[DataMember]
- public string[] Attachments { get; set; }
+ public Dictionary[] Attachments { get; set; }
[DataMember]
public string Status { get; set; }
diff --git a/src/corelib/Core/Providers/IObjectStorageProvider.cs b/src/corelib/Core/Providers/IObjectStorageProvider.cs
index 1246e2066..830fd30aa 100644
--- a/src/corelib/Core/Providers/IObjectStorageProvider.cs
+++ b/src/corelib/Core/Providers/IObjectStorageProvider.cs
@@ -331,24 +331,39 @@ public interface IObjectStorageProvider
/// Name of the source object.Example image_name.jpeg
/// The destination container name.
/// Name of the destination object.Example image_name.jpeg
- /// The headers.
+ /// A list of HTTP headers to send to the service.
/// The region in which to execute this action.If not specified, the user’s default region will be used.
///If set to true uses ServiceNet URL.
/// The users Cloud Identity. If not specified, the default identity given in the constructor will be used.
///
ObjectStore CopyObject(string sourceContainer, string sourceObjectName, string destinationContainer, string destinationObjectName, Dictionary headers = null, string region = null, bool useInternalUrl = false, CloudIdentity identity = null);
+ ///
+ /// Moves an object. The original source object will be deleted only if the move is successful.
+ ///
+ /// The source container name.
+ /// Name of the source object.Example image_name.jpeg
+ /// The destination container name.
+ /// Name of the destination object.Example image_name.jpeg
+ /// A list of HTTP headers to send to the service.
+ /// The region in which to execute this action.If not specified, the user’s default region will be used.
+ ///If set to true uses ServiceNet URL.
+ /// The users Cloud Identity. If not specified, the default identity given in the constructor will be used.
+ ///
+ ObjectStore MoveObject(string sourceContainer, string sourceObjectName, string destinationContainer, string destinationObjectName, Dictionary headers = null, string region = null, bool useInternalUrl = false, CloudIdentity identity = null);
+
///
/// Deletes the object.
///
/// The container name.
/// Name of the object.Example image_name.jpeg
- /// The headers.
+ /// A list of HTTP headers to send to the service.
+ /// Indicates whether the file's segments should be deleted if any exist.
/// The region in which to execute this action.If not specified, the user’s default region will be used.
/// If set to true uses ServiceNet URL.
/// The users Cloud Identity. If not specified, the default identity given in the constructor will be used.
///
- ObjectStore DeleteObject(string container, string objectName, Dictionary headers = null, string region = null, bool useInternalUrl = false, CloudIdentity identity = null);
+ ObjectStore DeleteObject(string container, string objectName, Dictionary headers = null, bool deleteSegments = true, string region = null, bool useInternalUrl = false, CloudIdentity identity = null);
///
/// Purges the object from CDN.
diff --git a/src/corelib/Providers/Rackspace/CloudFilesProvider.cs b/src/corelib/Providers/Rackspace/CloudFilesProvider.cs
index 36dfe1f27..a9f9879dd 100644
--- a/src/corelib/Providers/Rackspace/CloudFilesProvider.cs
+++ b/src/corelib/Providers/Rackspace/CloudFilesProvider.cs
@@ -572,7 +572,7 @@ public void CreateObject(string container, Stream stream, string objectName, int
}
var urlPath = new Uri(string.Format("{0}/{1}/{2}", GetServiceEndpointCloudFiles(identity, region, useInternalUrl), _encodeDecodeProvider.UrlEncode(container), _encodeDecodeProvider.UrlEncode(objectName)));
- StreamRESTRequest(identity, urlPath, HttpMethod.PUT, stream, chunkSize, headers: headers, isRetry: true, progressUpdated: progressUpdated, requestSettings: new RequestSettings {ChunkRequest = true});
+ StreamRESTRequest(identity, urlPath, HttpMethod.PUT, stream, chunkSize, headers: headers, progressUpdated: progressUpdated, requestSettings: new RequestSettings {ChunkRequest = true});
}
///
@@ -659,53 +659,57 @@ public ObjectStore CopyObject(string sourceContainer, string sourceObjectName, s
_cloudFilesValidator.ValidateContainerName(destinationContainer);
_cloudFilesValidator.ValidateObjectName(destinationObjectName);
- if (headers != null)
- {
- if (string.IsNullOrWhiteSpace(headers.FirstOrDefault(x => x.Key.Equals(ContentLength, StringComparison.OrdinalIgnoreCase)).Value))
- {
- var contentLength = GetObjectContentLength(identity, sourceContainer, sourceObjectName, region, useInternalUrl);
- headers.Add(ContentLength, contentLength);
- }
- }
- else
- {
+ var urlPath = new Uri(string.Format("{0}/{1}/{2}", GetServiceEndpointCloudFiles(identity, region, useInternalUrl), _encodeDecodeProvider.UrlEncode(sourceContainer), _encodeDecodeProvider.UrlEncode(sourceObjectName)));
+
+ if(headers == null)
headers = new Dictionary();
- var contentLength = GetObjectContentLength(identity, sourceContainer, sourceObjectName, region, useInternalUrl);
- headers.Add(ContentLength, contentLength);
-
- }
-
- headers.Add(CopyFrom, string.Format("{0}/{1}", sourceContainer, sourceObjectName));
-
- var urlPath = new Uri(string.Format("{0}/{1}/{2}", GetServiceEndpointCloudFiles(identity, region, useInternalUrl), _encodeDecodeProvider.UrlEncode(destinationContainer), _encodeDecodeProvider.UrlEncode(destinationObjectName)));
- var response = ExecuteRESTRequest(identity, urlPath, HttpMethod.PUT, headers);
+ headers.Add(DestinationMetadataKey, string.Format("{0}/{1}", destinationContainer, destinationObjectName));
+ ExecuteRESTRequest(identity, urlPath, HttpMethod.COPY, headers: headers);
- if (response.StatusCode == 201)
- return ObjectStore.ObjectCreated;
- if (response.StatusCode == 404)
- return ObjectStore.ContainerNotFound;
-
- return ObjectStore.Unknown;
+ return ObjectStore.ObjectCreated;
}
///
- public ObjectStore DeleteObject(string container, string objectName, Dictionary headers = null, string region = null, bool useInternalUrl = false, CloudIdentity identity = null)
+ public ObjectStore DeleteObject(string container, string objectName, Dictionary headers = null, bool deleteSegments = true, string region = null, bool useInternalUrl = false, CloudIdentity identity = null)
{
_cloudFilesValidator.ValidateContainerName(container);
_cloudFilesValidator.ValidateObjectName(objectName);
+ Dictionary objectHeader = null;
+ if(deleteSegments)
+ objectHeader = GetObjectHeaders(container, objectName, region, useInternalUrl, identity);
+
var urlPath = new Uri(string.Format("{0}/{1}/{2}", GetServiceEndpointCloudFiles(identity, region, useInternalUrl), _encodeDecodeProvider.UrlEncode(container), _encodeDecodeProvider.UrlEncode(objectName)));
- var response = ExecuteRESTRequest(identity, urlPath, HttpMethod.DELETE, headers);
+ ExecuteRESTRequest(identity, urlPath, HttpMethod.DELETE, headers: headers);
- if (response.StatusCode == 204)
- return ObjectStore.ObjectDeleted;
- if (response.StatusCode == 404)
- return ObjectStore.ContainerNotFound;
+ if (deleteSegments && objectHeader != null && objectHeader.Any(h => h.Key.Equals(ObjectManifestMetadataKey, StringComparison.OrdinalIgnoreCase)))
+ {
+ var objects = this.ListObjects(container, region: region, useInternalUrl: useInternalUrl, identity: identity);
- return ObjectStore.Unknown;
+ if (objects != null && objects.Any())
+ {
+ var segments = objects.Where(f => f.Name.StartsWith(string.Format("{0}.seg", objectName)));
+ foreach (var segment in segments)
+ {
+ DeleteObject(container, segment.Name, headers, false, region, useInternalUrl, identity);
+ }
+ }
+ }
+
+ return ObjectStore.ObjectDeleted;
+ }
+ ///
+ public ObjectStore MoveObject(string sourceContainer, string sourceObjectName, string destinationContainer, string destinationObjectName, Dictionary headers = null, string region = null, bool useInternalUrl = false, CloudIdentity identity = null)
+ {
+ var result = CopyObject(sourceContainer, sourceObjectName, destinationContainer, destinationObjectName, headers, region, useInternalUrl, identity);
+
+ if (result != ObjectStore.ObjectCreated)
+ return result;
+
+ return DeleteObject(sourceContainer, sourceObjectName, headers, true, region, useInternalUrl, identity);
}
///
@@ -828,13 +832,6 @@ public void UpdateAccountHeaders(Dictionary headers, string regi
#region Private methods
- private string GetObjectContentLength(CloudIdentity identity, string sourceContainer, string sourceObjectName, string region, bool useInternalUrl)
- {
- var sourceHeaders = GetObjectHeaders(sourceContainer, sourceObjectName, region,useInternalUrl, identity);
- var contentLength = sourceHeaders.FirstOrDefault(x => x.Key.Equals(ContentLength, StringComparison.OrdinalIgnoreCase)).Value;
- return contentLength;
- }
-
protected string GetServiceEndpointCloudFiles(CloudIdentity identity, string region = null, bool useInternalUrl = false)
{
return useInternalUrl ? base.GetInternalServiceEndpoint(identity, "cloudFiles", region) : base.GetPublicServiceEndpoint(identity, "cloudFiles", region);
@@ -886,7 +883,7 @@ private void CreateObjectInSegments(string container, Stream stream, string obje
var urlPath = new Uri(string.Format("{0}/{1}/{2}.seg{3}", GetServiceEndpointCloudFiles(identity, region, useInternalUrl), container, objectName, i));
long segmentBytesWritten = 0;
- StreamRESTRequest(identity, urlPath, HttpMethod.PUT, stream, chunkSize, length, headers: headers, isRetry: true, requestSettings: new RequestSettings {ChunkRequest = true}, progressUpdated:
+ StreamRESTRequest(identity, urlPath, HttpMethod.PUT, stream, chunkSize, length, headers: headers, requestSettings: new RequestSettings {ChunkRequest = true}, progressUpdated:
bytesWritten =>
{
if (progressUpdated != null)
@@ -906,7 +903,7 @@ private void CreateObjectInSegments(string container, Stream stream, string obje
headers = new Dictionary();
headers.Add(ObjectManifestMetadataKey, string.Format("{0}/{1}", container, objectName));
- StreamRESTRequest(identity, segmentUrlPath, HttpMethod.PUT, new MemoryStream(new Byte[0]), chunkSize, headers: headers, isRetry: true, requestSettings: new RequestSettings {ChunkRequest = true}, progressUpdated:
+ StreamRESTRequest(identity, segmentUrlPath, HttpMethod.PUT, new MemoryStream(new Byte[0]), chunkSize, headers: headers, requestSettings: new RequestSettings {ChunkRequest = true}, progressUpdated:
(bytesWritten) =>
{
if (progressUpdated != null)
@@ -957,10 +954,9 @@ protected override IObjectStorageProvider BuildProvider(CloudIdentity identity)
public const string ObjectDeleteAfter = "x-delete-after";
public const string ObjectDeleteAt = "x-delete-at";
public const string Etag = "etag";
- public const string ContentType = "content-type";
- public const string ContentLength = "content-length";
- public const string CopyFrom = "x-copy-from";
- public const string ObjectManifestMetadataKey = "X-Object-Manifest";
+ public const string DestinationMetadataKey = "destination";
+ public const string ObjectManifestMetadataKey = "x-object-manifest";
+
//Cdn Object Constants
public const string CdnPurgeEmail = "x-purge-email";
diff --git a/src/corelib/Providers/Rackspace/CloudIdentityProviderFactory.cs b/src/corelib/Providers/Rackspace/CloudIdentityProviderFactory.cs
index ddb424e18..d45efafd5 100644
--- a/src/corelib/Providers/Rackspace/CloudIdentityProviderFactory.cs
+++ b/src/corelib/Providers/Rackspace/CloudIdentityProviderFactory.cs
@@ -4,6 +4,7 @@
using net.openstack.Core.Caching;
using net.openstack.Core.Domain;
using net.openstack.Providers.Rackspace.Exceptions;
+using net.openstack.Providers.Rackspace.Objects;
using net.openstack.Providers.Rackspace.Validators;
namespace net.openstack.Providers.Rackspace
diff --git a/src/corelib/Providers/Rackspace/GeographicalCloudIdentityProvider.cs b/src/corelib/Providers/Rackspace/GeographicalCloudIdentityProvider.cs
index 297151785..f589617f7 100644
--- a/src/corelib/Providers/Rackspace/GeographicalCloudIdentityProvider.cs
+++ b/src/corelib/Providers/Rackspace/GeographicalCloudIdentityProvider.cs
@@ -9,6 +9,7 @@
using net.openstack.Core.Caching;
using net.openstack.Core.Domain;
using net.openstack.Core.Validators;
+using net.openstack.Providers.Rackspace.Objects;
using net.openstack.Providers.Rackspace.Objects.Request;
using net.openstack.Providers.Rackspace.Objects.Response;
diff --git a/src/corelib/Providers/Rackspace/Objects/AuthDetails.cs b/src/corelib/Providers/Rackspace/Objects/AuthDetails.cs
index 46a351537..a72054c13 100644
--- a/src/corelib/Providers/Rackspace/Objects/AuthDetails.cs
+++ b/src/corelib/Providers/Rackspace/Objects/AuthDetails.cs
@@ -10,5 +10,8 @@ internal class AuthDetails
[DataMember(Name = "RAX-KSKEY:apiKeyCredentials", EmitDefaultValue = true)]
public Credentials APIKeyCredentials { get; set; }
+
+ [DataMember(Name = "RAX-AUTH:domain", EmitDefaultValue = true)]
+ public Domain Domain { get; set; }
}
}
\ No newline at end of file
diff --git a/src/corelib/Providers/Rackspace/Objects/Domain.cs b/src/corelib/Providers/Rackspace/Objects/Domain.cs
new file mode 100644
index 000000000..8af9b0aff
--- /dev/null
+++ b/src/corelib/Providers/Rackspace/Objects/Domain.cs
@@ -0,0 +1,11 @@
+using System.Runtime.Serialization;
+
+namespace net.openstack.Providers.Rackspace.Objects
+{
+ [DataContract]
+ public class Domain
+ {
+ [DataMember(Name = "name")]
+ public string Name { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/corelib/Providers/Rackspace/RackspaceCloudIdentity.cs b/src/corelib/Providers/Rackspace/Objects/RackspaceCloudIdentity.cs
similarity index 86%
rename from src/corelib/Providers/Rackspace/RackspaceCloudIdentity.cs
rename to src/corelib/Providers/Rackspace/Objects/RackspaceCloudIdentity.cs
index b41539f13..c8bb1ee26 100644
--- a/src/corelib/Providers/Rackspace/RackspaceCloudIdentity.cs
+++ b/src/corelib/Providers/Rackspace/Objects/RackspaceCloudIdentity.cs
@@ -1,6 +1,6 @@
using net.openstack.Core.Domain;
-namespace net.openstack.Providers.Rackspace
+namespace net.openstack.Providers.Rackspace.Objects
{
public class RackspaceCloudIdentity : CloudIdentity
{
@@ -17,6 +17,8 @@ public RackspaceCloudIdentity(CloudIdentity cloudIdentity) : this()
}
public CloudInstance CloudInstance { get; set; }
+
+ public Domain Domain { get; set; }
}
public enum CloudInstance
diff --git a/src/corelib/Providers/Rackspace/Objects/Request/AuthRequest.cs b/src/corelib/Providers/Rackspace/Objects/Request/AuthRequest.cs
index 336e3a2b9..34c12ddcd 100644
--- a/src/corelib/Providers/Rackspace/Objects/Request/AuthRequest.cs
+++ b/src/corelib/Providers/Rackspace/Objects/Request/AuthRequest.cs
@@ -16,6 +16,13 @@ public static AuthRequest FromCloudIdentity(CloudIdentity identity)
creds.APIKeyCredentials = new Credentials() { Username = identity.Username, APIKey = identity.APIKey};
else
creds.PasswordCredentials = new Credentials(){Username = identity.Username, Password = identity.Password};
+
+ var raxIdentity = identity as RackspaceCloudIdentity;
+ if (raxIdentity != null)
+ {
+ creds.Domain = raxIdentity.Domain;
+ }
+
return new AuthRequest { Credencials = creds };
}
}
diff --git a/src/corelib/Providers/Rackspace/ProviderBase.cs b/src/corelib/Providers/Rackspace/ProviderBase.cs
index 9c104ceff..bde212626 100644
--- a/src/corelib/Providers/Rackspace/ProviderBase.cs
+++ b/src/corelib/Providers/Rackspace/ProviderBase.cs
@@ -12,6 +12,7 @@
using net.openstack.Core.Exceptions;
using net.openstack.Core.Providers;
using net.openstack.Core.Validators;
+using net.openstack.Providers.Rackspace.Objects;
using net.openstack.Providers.Rackspace.Validators;
namespace net.openstack.Providers.Rackspace
diff --git a/src/corelib/Providers/Rackspace/RackspaceImpersonationIdentity.cs b/src/corelib/Providers/Rackspace/RackspaceImpersonationIdentity.cs
index 6265bf449..ec7174476 100644
--- a/src/corelib/Providers/Rackspace/RackspaceImpersonationIdentity.cs
+++ b/src/corelib/Providers/Rackspace/RackspaceImpersonationIdentity.cs
@@ -1,4 +1,6 @@
-namespace net.openstack.Providers.Rackspace
+using net.openstack.Providers.Rackspace.Objects;
+
+namespace net.openstack.Providers.Rackspace
{
public class RackspaceImpersonationIdentity : RackspaceCloudIdentity
{
diff --git a/src/corelib/corelib.csproj b/src/corelib/corelib.csproj
index a4b3a10bd..7fe97253b 100644
--- a/src/corelib/corelib.csproj
+++ b/src/corelib/corelib.csproj
@@ -35,11 +35,12 @@
+ False
..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
-
+
False
- ..\packages\SimpleRESTServices.1.0.6.3\lib\net40\SimpleRESTServices.dll
+ ..\packages\SimpleRESTServices.1.0.6.6\lib\net40\SimpleRESTServices.dll
@@ -104,6 +105,7 @@
+
@@ -174,7 +176,7 @@
-
+
@@ -215,7 +217,6 @@
-
Always
diff --git a/src/corelib/packages.config b/src/corelib/packages.config
index 06f77f62c..6566c6481 100644
--- a/src/corelib/packages.config
+++ b/src/corelib/packages.config
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/src/openstack.net_Integration_Tests.sln b/src/openstack.net_Integration_Tests.sln
index f7bb56571..0c3501c47 100644
--- a/src/openstack.net_Integration_Tests.sln
+++ b/src/openstack.net_Integration_Tests.sln
@@ -13,6 +13,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "testing", "testing", "{62B45D81-B643-4E2B-B612-F479B9570F3A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "unit", "testing\unit\unit.csproj", "{FDFD92C2-75CF-4437-87B8-841EC3624CE4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "console", "console\console.csproj", "{1C279666-B88A-4765-8A51-B352C85EFC28}"
+EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = openstack.net.vsmdi
@@ -46,11 +50,32 @@ Global
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4}.Release|x86.ActiveCfg = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|x86.ActiveCfg = Release|Any CPU
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|x86.ActiveCfg = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|x86.Build.0 = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|Any CPU.ActiveCfg = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|Mixed Platforms.Build.0 = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|x86.ActiveCfg = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4} = {62B45D81-B643-4E2B-B612-F479B9570F3A}
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4} = {62B45D81-B643-4E2B-B612-F479B9570F3A}
EndGlobalSection
EndGlobal
diff --git a/src/openstack.net_Integration_Tests_2012.sln b/src/openstack.net_Integration_Tests_2012.sln
index f7bb56571..a22db86e7 100644
--- a/src/openstack.net_Integration_Tests_2012.sln
+++ b/src/openstack.net_Integration_Tests_2012.sln
@@ -1,6 +1,6 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corelib", "corelib\corelib.csproj", "{7DBA11EB-DBA7-4D3A-8D42-B5312E74B9C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "integration", "testing\integration\integration.csproj", "{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4}"
@@ -13,6 +13,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "testing", "testing", "{62B45D81-B643-4E2B-B612-F479B9570F3A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "unit", "testing\unit\unit.csproj", "{FDFD92C2-75CF-4437-87B8-841EC3624CE4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "console", "console\console.csproj", "{1C279666-B88A-4765-8A51-B352C85EFC28}"
+EndProject
Global
GlobalSection(TestCaseManagementSettings) = postSolution
CategoryFile = openstack.net.vsmdi
@@ -46,11 +50,32 @@ Global
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4}.Release|x86.ActiveCfg = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4}.Release|x86.ActiveCfg = Release|Any CPU
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|x86.ActiveCfg = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Debug|x86.Build.0 = Debug|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|Any CPU.ActiveCfg = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|Mixed Platforms.Build.0 = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|x86.ActiveCfg = Release|x86
+ {1C279666-B88A-4765-8A51-B352C85EFC28}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{C1D0D0D8-9EF2-4557-B85F-34FDB0F466C4} = {62B45D81-B643-4E2B-B612-F479B9570F3A}
+ {FDFD92C2-75CF-4437-87B8-841EC3624CE4} = {62B45D81-B643-4E2B-B612-F479B9570F3A}
EndGlobalSection
EndGlobal
diff --git a/src/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nuspec b/src/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nuspec
index 5236069c1..bded369b6 100644
--- a/src/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nuspec
+++ b/src/packages/Newtonsoft.Json.4.5.11/Newtonsoft.Json.4.5.11.nuspec
@@ -1,5 +1,5 @@
-
+
Newtonsoft.Json
4.5.11
@@ -12,8 +12,5 @@
Json.NET is a popular high-performance JSON framework for .NET
en-US
json
-
-
-
\ No newline at end of file
diff --git a/src/packages/SimpleRESTServices.1.0.6.3/lib/net40/SimpleRESTServices.dll b/src/packages/SimpleRESTServices.1.0.6.3/lib/net40/SimpleRESTServices.dll
deleted file mode 100644
index ae84fc479..000000000
Binary files a/src/packages/SimpleRESTServices.1.0.6.3/lib/net40/SimpleRESTServices.dll and /dev/null differ
diff --git a/src/packages/SimpleRESTServices.1.0.6.3/SimpleRESTServices.1.0.6.3.nuspec b/src/packages/SimpleRESTServices.1.0.6.6/SimpleRESTServices.1.0.6.6.nuspec
similarity index 91%
rename from src/packages/SimpleRESTServices.1.0.6.3/SimpleRESTServices.1.0.6.3.nuspec
rename to src/packages/SimpleRESTServices.1.0.6.6/SimpleRESTServices.1.0.6.6.nuspec
index ff7a7a9f8..56d3b1109 100644
--- a/src/packages/SimpleRESTServices.1.0.6.3/SimpleRESTServices.1.0.6.3.nuspec
+++ b/src/packages/SimpleRESTServices.1.0.6.6/SimpleRESTServices.1.0.6.6.nuspec
@@ -2,7 +2,7 @@
SimpleRESTServices
- 1.0.6.3
+ 1.0.6.6
SimpleRESTServices
alanquillin
alanquillin
@@ -10,8 +10,9 @@
https://github.com/JSIStudios/SimpleRestServices
true
A simple set of client side and server side REST helpers
- https://github.com/JSIStudios/SimpleRestServices/wiki/v1.0.6.3
+ https://github.com/JSIStudios/SimpleRestServices/wiki/v1.0.6.6
Copyright 2013
+
REST REST_client
diff --git a/src/packages/SimpleRESTServices.1.0.6.6/lib/net40/SimpleRESTServices.dll b/src/packages/SimpleRESTServices.1.0.6.6/lib/net40/SimpleRESTServices.dll
new file mode 100644
index 000000000..6069cdb7d
Binary files /dev/null and b/src/packages/SimpleRESTServices.1.0.6.6/lib/net40/SimpleRESTServices.dll differ
diff --git a/src/testing/integration/Bootstrapper.cs b/src/testing/integration/Bootstrapper.cs
index ee43553f2..ab74e656d 100644
--- a/src/testing/integration/Bootstrapper.cs
+++ b/src/testing/integration/Bootstrapper.cs
@@ -2,7 +2,7 @@
using System.IO;
using System.Text;
using net.openstack.Core.Domain;
-using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
namespace Net.OpenStack.Testing.Integration
{
@@ -53,6 +53,8 @@ public class OpenstackNetSetings
public ExtendedCloudIdentity TestAdminIdentity { get; set; }
+ public ExtendedCloudIdentity TestDomainIdentity { get; set; }
+
public string RackspaceExtendedIdentityUSUrl { get; set; }
public string RackspaceExtendedIdentityUKUrl { get; set; }
}
@@ -60,6 +62,8 @@ public class OpenstackNetSetings
public class ExtendedCloudIdentity : CloudIdentity
{
public string TenantId { get; set; }
+
+ public string Domain { get; set; }
}
public class ExtendedRackspaceCloudIdentity : RackspaceCloudIdentity
@@ -72,6 +76,7 @@ public ExtendedRackspaceCloudIdentity(ExtendedCloudIdentity cloudIdentity)
this.Password = cloudIdentity.Password;
this.Username = cloudIdentity.Username;
this.TenantId = cloudIdentity.TenantId;
+ this.Domain = string.IsNullOrWhiteSpace(cloudIdentity.Domain) ? null : new Domain {Name = cloudIdentity.Domain};
}
}
}
diff --git a/src/testing/integration/Providers/Rackspace/CloudBlockStorageTests.cs b/src/testing/integration/Providers/Rackspace/CloudBlockStorageTests.cs
index 03fa82b54..b0b1f335e 100644
--- a/src/testing/integration/Providers/Rackspace/CloudBlockStorageTests.cs
+++ b/src/testing/integration/Providers/Rackspace/CloudBlockStorageTests.cs
@@ -3,6 +3,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using net.openstack.Core.Domain;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
namespace Net.OpenStack.Testing.Integration.Providers.Rackspace
{
diff --git a/src/testing/integration/Providers/Rackspace/CloudFilesTests.cs b/src/testing/integration/Providers/Rackspace/CloudFilesTests.cs
index eb9f4d5e5..87a8ce640 100644
--- a/src/testing/integration/Providers/Rackspace/CloudFilesTests.cs
+++ b/src/testing/integration/Providers/Rackspace/CloudFilesTests.cs
@@ -9,6 +9,7 @@
using net.openstack.Core.Domain;
using net.openstack.Core.Exceptions.Response;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
namespace Net.OpenStack.Testing.Integration.Providers.Rackspace
{
@@ -24,7 +25,8 @@ public class CloudFilesTests
const string webListingsCSS = "index.css";
const bool webListing = true;
const string objectName = "DarkKnightRises.jpg";
- const string saveDirectory = @"C:\";
+ const string saveFileNane1 = "DarkKnightRises_SAVE1.jpg";
+ const string saveFileNane2 = "DarkKnightRises_SAVE2.jpg";
private static readonly string sourceContainerName = containerName;
private const string sourceObjectName = objectName;
@@ -65,6 +67,14 @@ public TestContext TestContext
public static void Init(TestContext context)
{
_testIdentity = new RackspaceCloudIdentity(Bootstrapper.Settings.TestIdentity);
+
+ var file = Path.Combine(Directory.GetCurrentDirectory(), saveFileNane1);
+ if(File.Exists(file))
+ File.Delete(file);
+
+ file = Path.Combine(Directory.GetCurrentDirectory(), saveFileNane2);
+ if (File.Exists(file))
+ File.Delete(file);
}
#region Container Tests
@@ -621,22 +631,16 @@ public void Should_Create_Object_From_File_Without_Headers()
[DeploymentItem("DarkKnightRises.jpg")]
public void Should_Get_Object_And_Save_To_File_Without_Headers()
{
- string filePath = Path.Combine(Directory.GetCurrentDirectory(), objectName);
- string fileName = Path.GetFileName(filePath);
- var headers = new Dictionary();
- var provider = new CloudFilesProvider();
- provider.GetObjectSaveToFile(containerName, saveDirectory, fileName, null, 65536, null, null, false, identity: _testIdentity);
+ var provider = new CloudFilesProvider(_testIdentity);
+ provider.GetObjectSaveToFile(containerName, Directory.GetCurrentDirectory(), objectName, saveFileNane1);
}
[TestMethod]
[DeploymentItem("DarkKnightRises.jpg")]
public void Should_Get_Object_And_Save_To_File_Without_Headers_And_Verify_Etag()
{
- string filePath = Path.Combine(Directory.GetCurrentDirectory(), objectName);
- string fileName = Path.GetFileName(filePath);
- var headers = new Dictionary();
- var provider = new CloudFilesProvider();
- provider.GetObjectSaveToFile(containerName, saveDirectory, fileName, null, 65536, null, null, true, identity: _testIdentity);
+ var provider = new CloudFilesProvider(_testIdentity);
+ provider.GetObjectSaveToFile(containerName, Directory.GetCurrentDirectory(), objectName, saveFileNane2, verifyEtag: true);
}
[TestMethod]
@@ -684,30 +688,39 @@ public void Should_Copy_Object_When_Not_Passing_Content_Length()
[TestMethod]
public void Should_Copy_Object_When_Passing_Content_Length()
{
- Dictionary header = new Dictionary();
- header.Add(CloudFilesProvider.ContentLength, "62504");
-
- var provider = new CloudFilesProvider();
- var copyResponse = provider.CopyObject(sourceContainerName, sourceObjectName, destinationContainerName, destinationObjectName, header, identity: _testIdentity);
+ var provider = new CloudFilesProvider(_testIdentity);
+ var copyResponse = provider.CopyObject(sourceContainerName, sourceObjectName, destinationContainerName, destinationObjectName);
Assert.AreEqual(ObjectStore.ObjectCreated, copyResponse);
+
+ var sourceheader = provider.GetObjectHeaders(sourceContainerName, sourceObjectName);
+ var destinationHeader = provider.GetObjectHeaders(destinationContainerName, destinationObjectName);
+
+ Assert.AreEqual(sourceheader.First(h => h.Key.Equals("ETag", StringComparison.OrdinalIgnoreCase)).Value, destinationHeader.First(h => h.Key.Equals("ETag", StringComparison.OrdinalIgnoreCase)).Value);
+ Assert.AreEqual(sourceheader.First(h => h.Key.Equals("Content-Length", StringComparison.OrdinalIgnoreCase)).Value, destinationHeader.First(h => h.Key.Equals("Content-Length", StringComparison.OrdinalIgnoreCase)).Value);
}
[TestMethod]
public void Should_Copy_Object_When_Not_Passing_Content_Length_And_Passing_Expiring_Header()
{
// Object will expire 2 days from now.
- int epoch = (int)(DateTime.UtcNow.AddDays(2) - new DateTime(1970, 1, 1)).TotalSeconds;
+ var epoch = (int)(DateTime.UtcNow.AddDays(2) - new DateTime(1970, 1, 1)).TotalSeconds;
- Dictionary header = new Dictionary();
- header.Add(CloudFilesProvider.ObjectDeleteAt, epoch.ToString());
+ var header = new Dictionary { { CloudFilesProvider.ObjectDeleteAt, epoch.ToString() } };
- var provider = new CloudFilesProvider();
- var copyResponse = provider.CopyObject(sourceContainerName, sourceObjectName, destinationContainerName, destinationObjectName, header, identity: _testIdentity);
+ var provider = new CloudFilesProvider(_testIdentity);
+ var copyResponse = provider.CopyObject(sourceContainerName, sourceObjectName, destinationContainerName, destinationObjectName, header);
Assert.AreEqual(ObjectStore.ObjectCreated, copyResponse);
+ var sourceheader = provider.GetObjectHeaders(sourceContainerName, sourceObjectName);
+ var destinationHeader = provider.GetObjectHeaders(destinationContainerName, destinationObjectName);
+
+ Assert.AreEqual(sourceheader.First(h => h.Key.Equals("ETag", StringComparison.OrdinalIgnoreCase)).Value, destinationHeader.First(h => h.Key.Equals("ETag", StringComparison.OrdinalIgnoreCase)).Value);
+ Assert.AreEqual(sourceheader.First(h => h.Key.Equals("Content-Length", StringComparison.OrdinalIgnoreCase)).Value, destinationHeader.First(h => h.Key.Equals("Content-Length", StringComparison.OrdinalIgnoreCase)).Value);
+
}
+
[TestMethod]
public void Should_Get_MetaData_For_Object1()
{
diff --git a/src/testing/integration/Providers/Rackspace/CloudNetworksTests.cs b/src/testing/integration/Providers/Rackspace/CloudNetworksTests.cs
index 19f8b2cd1..a1f197218 100644
--- a/src/testing/integration/Providers/Rackspace/CloudNetworksTests.cs
+++ b/src/testing/integration/Providers/Rackspace/CloudNetworksTests.cs
@@ -5,6 +5,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using net.openstack.Core.Domain;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
namespace Net.OpenStack.Testing.Integration.Providers.Rackspace
{
diff --git a/src/testing/integration/Providers/Rackspace/CloudServersTests.cs b/src/testing/integration/Providers/Rackspace/CloudServersTests.cs
index 6c8375a94..0e521b34a 100644
--- a/src/testing/integration/Providers/Rackspace/CloudServersTests.cs
+++ b/src/testing/integration/Providers/Rackspace/CloudServersTests.cs
@@ -5,8 +5,9 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using net.openstack.Core.Domain;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
- namespace Net.OpenStack.Testing.Integration.Providers.Rackspace
+namespace Net.OpenStack.Testing.Integration.Providers.Rackspace
{
///
/// Summary description for CloudServersTests
diff --git a/src/testing/integration/Providers/Rackspace/ExtendedIdentityFull.orderedtest b/src/testing/integration/Providers/Rackspace/ExtendedIdentityFull.orderedtest
index f9929f37d..a62023de6 100644
--- a/src/testing/integration/Providers/Rackspace/ExtendedIdentityFull.orderedtest
+++ b/src/testing/integration/Providers/Rackspace/ExtendedIdentityFull.orderedtest
@@ -1,6 +1,6 @@
-
+
@@ -12,5 +12,6 @@
+
\ No newline at end of file
diff --git a/src/testing/integration/Providers/Rackspace/ExtendedIdentityTests.cs b/src/testing/integration/Providers/Rackspace/ExtendedIdentityTests.cs
index 2c9f3af4c..f04205a6e 100644
--- a/src/testing/integration/Providers/Rackspace/ExtendedIdentityTests.cs
+++ b/src/testing/integration/Providers/Rackspace/ExtendedIdentityTests.cs
@@ -1,11 +1,12 @@
using System;
using JSIStudios.SimpleRESTServices.Client;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using net.openstack;
using net.openstack.Core.Caching;
using net.openstack.Core.Domain;
using net.openstack.Core.Exceptions.Response;
+using net.openstack.Core.Providers;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
namespace Net.OpenStack.Testing.Integration.Providers.Rackspace
{
@@ -15,13 +16,11 @@ public class ExtendedIdentityTests
private TestContext testContextInstance;
private static RackspaceCloudIdentity _testIdentity;
private static RackspaceCloudIdentity _testAdminIdentity;
+ private static ExtendedRackspaceCloudIdentity _testDomainIdentity;
private static User _userDetails;
private static User _adminUserDetails;
private const string NewPassword = "My_n3w_p@$$w0rd";
- private const string AdminNewPassword = "My_n3w_@dmin_p@$$w0rd";
- private static string _newAPIKey;
- private static string _adminNewAPIKey;
-
+ private const string AdminNewPassword = "My_n3w_@dmin_p@$$w0rd";
///
///Gets or sets the test context which provides
///information about and functionality for the current test run.
@@ -43,9 +42,7 @@ public static void Init(TestContext context)
{
_testIdentity = new RackspaceCloudIdentity(Bootstrapper.Settings.TestIdentity);
_testAdminIdentity = new RackspaceCloudIdentity(Bootstrapper.Settings.TestAdminIdentity);
-
- _newAPIKey = Guid.NewGuid().ToString();
- _adminNewAPIKey = Guid.NewGuid().ToString();
+ _testDomainIdentity = new ExtendedRackspaceCloudIdentity(Bootstrapper.Settings.TestDomainIdentity);
var provider = BuildProvider();
@@ -65,7 +62,7 @@ public void Test001_Should_Throw_Exception_When_Trying_To_Change_Password_For_Se
try
{
- var result = provider.SetUserPassword(_userDetails, NewPassword, _testIdentity);
+ provider.SetUserPassword(_userDetails, NewPassword, _testIdentity);
throw new Exception("This code path is invalid, exception was expected.");
}
@@ -82,7 +79,7 @@ public void Test002_Should_Throw_Exception_When_Trying_To_Change_Password_For_Ot
try
{
- var result = provider.SetUserPassword(_adminUserDetails, AdminNewPassword, _testIdentity);
+ provider.SetUserPassword(_adminUserDetails, AdminNewPassword, _testIdentity);
throw new Exception("This code path is invalid, exception was expected.");
}
@@ -185,5 +182,18 @@ public void Test010_Should_Successfully_Authenticate_With_Old_Password_For_Non_A
Assert.IsNotNull(userAcess);
}
+
+ [TestMethod]
+ public void Test011_Should_Successfully_Authenticate_Using_Domain_Credencials()
+ {
+ var provider = BuildProvider();
+
+ var creds = provider.Authenticate(_testDomainIdentity);
+
+ Assert.IsNotNull(creds);
+ Assert.IsNotNull(creds.Token);
+ Assert.IsNotNull(creds.User);
+ Assert.AreEqual(_testDomainIdentity.Username, creds.User.Id);
+ }
}
}
diff --git a/src/testing/integration/Providers/Rackspace/IdentityTests.cs b/src/testing/integration/Providers/Rackspace/IdentityTests.cs
index efdf2ddc2..71e47a581 100644
--- a/src/testing/integration/Providers/Rackspace/IdentityTests.cs
+++ b/src/testing/integration/Providers/Rackspace/IdentityTests.cs
@@ -1,10 +1,10 @@
using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
-using net.openstack.Core;
using net.openstack.Core.Domain;
using net.openstack.Core.Providers;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
namespace Net.OpenStack.Testing.Integration.Providers.Rackspace
{
@@ -41,6 +41,7 @@ public static void Init(TestContext context)
{
_testIdentity = new ExtendedRackspaceCloudIdentity(Bootstrapper.Settings.TestIdentity);
_testAdminIdentity = new ExtendedRackspaceCloudIdentity(Bootstrapper.Settings.TestAdminIdentity);
+
}
[TestMethod]
diff --git a/src/testing/integration/integration.csproj b/src/testing/integration/integration.csproj
index 7eb5f2ea5..5252715b2 100644
--- a/src/testing/integration/integration.csproj
+++ b/src/testing/integration/integration.csproj
@@ -37,16 +37,17 @@
..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll
-
+
+ False
..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
False
..\..\packages\SSH.NET.2013.4.7\lib\net40\Renci.SshNet.dll
-
+
False
- ..\..\packages\SimpleRESTServices.1.0.6.3\lib\net40\SimpleRESTServices.dll
+ ..\..\packages\SimpleRESTServices.1.0.6.6\lib\net40\SimpleRESTServices.dll
diff --git a/src/testing/integration/packages.config b/src/testing/integration/packages.config
index 680b2a0b0..54a2997eb 100644
--- a/src/testing/integration/packages.config
+++ b/src/testing/integration/packages.config
@@ -2,6 +2,6 @@
-
+
\ No newline at end of file
diff --git a/src/testing/unit/Providers/Rackspace/IdentityProviderCacheTests.cs b/src/testing/unit/Providers/Rackspace/IdentityProviderCacheTests.cs
index 7d6c0da26..35ccb137a 100644
--- a/src/testing/unit/Providers/Rackspace/IdentityProviderCacheTests.cs
+++ b/src/testing/unit/Providers/Rackspace/IdentityProviderCacheTests.cs
@@ -1,14 +1,12 @@
using System;
-using System.Text;
using System.Collections.Generic;
-using System.Linq;
using JSIStudios.SimpleRESTServices.Client;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
-using net.openstack;
using net.openstack.Core.Caching;
using net.openstack.Core.Domain;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
using net.openstack.Providers.Rackspace.Objects.Response;
namespace OpenStackNet.Testing.Unit.Providers.Rackspace
diff --git a/src/testing/unit/Providers/Rackspace/ProviderBaseTests.cs b/src/testing/unit/Providers/Rackspace/ProviderBaseTests.cs
index 76186e8e8..3b136e0bb 100644
--- a/src/testing/unit/Providers/Rackspace/ProviderBaseTests.cs
+++ b/src/testing/unit/Providers/Rackspace/ProviderBaseTests.cs
@@ -10,6 +10,7 @@
using net.openstack.Core.Domain;
using net.openstack.Core.Providers;
using net.openstack.Providers.Rackspace;
+using net.openstack.Providers.Rackspace.Objects;
namespace OpenStackNet.Testing.Unit.Providers.Rackspace
{
diff --git a/src/testing/unit/packages.config b/src/testing/unit/packages.config
index 6933c1c5f..8183be47e 100644
--- a/src/testing/unit/packages.config
+++ b/src/testing/unit/packages.config
@@ -2,5 +2,5 @@
-
+
\ No newline at end of file
diff --git a/src/testing/unit/unit.csproj b/src/testing/unit/unit.csproj
index 74f81bacf..fa20f8d3f 100644
--- a/src/testing/unit/unit.csproj
+++ b/src/testing/unit/unit.csproj
@@ -37,12 +37,13 @@
..\..\packages\Moq.4.0.10827\lib\NET40\Moq.dll
-
+
+ False
..\..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll
-
+
False
- ..\..\packages\SimpleRESTServices.1.0.6.3\lib\net40\SimpleRESTServices.dll
+ ..\..\packages\SimpleRESTServices.1.0.6.6\lib\net40\SimpleRESTServices.dll