public void AddOrUpdatePublishConfiguration_ConfigDoesNotYetExist_NewEntryIsPersisted() { // Arrange string configurationName = "Some Config Name"; string publishLocation = "http://nuget.org/api/v2"; string apiKey = Guid.NewGuid().ToString(); var applicationInformation = new ApplicationInformation { ConfigurationFileFolder = Environment.CurrentDirectory }; var publishConfigurationFactory = new Mock<IPublishConfigurationFactory>(); var publishConfigurationPersistence = new Mock<IFilesystemPersistence<PublishConfiguration[]>>(); var createdPublishConfiguration = new PublishConfiguration { Name = configurationName, PublishLocation = publishLocation, ApiKey = apiKey }; publishConfigurationFactory.Setup(p => p.GetPublishConfiguration(configurationName, publishLocation, apiKey)).Returns(createdPublishConfiguration); var existingConfigurations = new PublishConfiguration[] { }; publishConfigurationPersistence.Setup(p => p.Load(It.IsAny<string>())).Returns(existingConfigurations); var configFilePublishConfigurationAccessor = new ConfigFilePublishConfigurationAccessor( applicationInformation, publishConfigurationFactory.Object, publishConfigurationPersistence.Object); // Act configFilePublishConfigurationAccessor.AddOrUpdatePublishConfiguration(configurationName, publishLocation, apiKey); // Assert publishConfigurationPersistence.Verify( p => p.Save(It.Is<PublishConfiguration[]>(configs => configs.First().Equals(createdPublishConfiguration)), It.IsAny<string>()), Times.Once()); }
public void Equals_SuppliedObjectIsOfOtherType_ResultIsFalse() { // Arrange var publishConfiguration1 = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; object publishConfiguration2 = new object(); // Act bool result = publishConfiguration1.Equals(publishConfiguration2); // Assert Assert.IsFalse(result); }
public void Equals_TwoIdenticalConfigurations_ResultIsTrue() { // Arrange var publishConfiguration1 = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; var publishConfiguration2 = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act bool result = publishConfiguration1.Equals(publishConfiguration2); // Assert Assert.IsTrue(result); }
public void CanBeDeserialized() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act string json = JsonConvert.SerializeObject(publishConfiguration); var deserializedpublishConfiguration = JsonConvert.DeserializeObject<PublishConfiguration>(json); // Assert Assert.AreEqual(publishConfiguration.Name, deserializedpublishConfiguration.Name); Assert.AreEqual(publishConfiguration.PublishLocation, deserializedpublishConfiguration.PublishLocation); }
public void Serialize_PublishConfiguration_JsonContainsAllProperties() { // Arrange var jsonObjectSerializer = new JSONObjectSerializer<PublishConfiguration>(); var name = Guid.NewGuid().ToString(); var location = Guid.NewGuid().ToString(); var apiKey = Guid.NewGuid().ToString(); var publishConfiguration = new PublishConfiguration { Name = name, PublishLocation = location, ApiKey = apiKey }; // Act var result = jsonObjectSerializer.Serialize(publishConfiguration); // Assert Assert.IsTrue(result.Contains(name)); Assert.IsTrue(result.Contains(location)); Assert.IsTrue(result.Contains(apiKey)); }
public void Load_PublishConfiguration_ObjectDeserializerReturnsEmptyPublishConfiguration_ResultIsEmptyPublishConfiguration() { // Arrange PublishConfiguration objectReturnedByDeserializer = new PublishConfiguration(); string storageLocation = "temp-file"; var filesystemAccessor = new Mock<IFilesystemAccessor>(); var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>(); filesystemAccessor.Setup(f => f.FileExists(It.IsAny<string>())).Returns(true); filesystemAccessor.Setup(f => f.GetFileContent(It.IsAny<string>())).Returns("some content"); objectSerializer.Setup(s => s.Deserialize(It.IsAny<string>())).Returns(objectReturnedByDeserializer); var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object); // Act var result = filesystemPersistence.Load(storageLocation); // Assert Assert.AreEqual(objectReturnedByDeserializer, result); }
public void IsValid_PropertyIsNotSerialed() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act string json = JsonConvert.SerializeObject(publishConfiguration); // Assert string isValidPropertyName = typeof(PublishConfiguration).GetProperties().First(p => p.Name.Equals("isvalid", StringComparison.OrdinalIgnoreCase)).Name; Assert.IsFalse(json.ToLower().Contains(isValidPropertyName.ToLower())); }
public void IsValid_NameIsWhitespace_ResultIsFalse() { // Arrange var publishConfiguration = new PublishConfiguration { Name = " ", PublishLocation = "http://nuget.org/api/v2" }; // Act bool result = publishConfiguration.IsValid; // Assert Assert.IsFalse(result); }
public void PublishPackage_PackageStreamIsNull_ResultIsFalse() { // Arrange string packagePath = @"C:\local-nuget-repo\package.nupkg"; string packageServerConfigurationName = "Nuget.org Publish Config"; var filesystemAccessor = new Mock<IFilesystemAccessor>(); var packageServerFactory = new Mock<IPackageServerFactory>(); var publishConfigurationAccessor = new Mock<IPublishConfigurationAccessor>(); Stream packageStream = null; filesystemAccessor.Setup(f => f.FileExists(packagePath)).Returns(true); filesystemAccessor.Setup(f => f.GetReadStream(packagePath)).Returns(packageStream); var publishConfiguration = new PublishConfiguration { Name = packageServerConfigurationName, PublishLocation = "http://nuget.org/api/v2" }; publishConfigurationAccessor.Setup(p => p.GetPublishConfiguration(packageServerConfigurationName)).Returns(publishConfiguration); var packageServer = new PackageServer(publishConfiguration.PublishLocation, NuDeployConstants.NuDeployCommandLinePackageId); packageServerFactory.Setup(p => p.GetPackageServer(It.IsAny<string>())).Returns(packageServer); var publishingService = new PublishingService(filesystemAccessor.Object, packageServerFactory.Object, publishConfigurationAccessor.Object); // Act var result = publishingService.PublishPackage(packagePath, packageServerConfigurationName); // Assert Assert.AreEqual(ServiceResultType.Failure, result.Status); }
public void Save_PublishConfiguration_ObjectSerializerReturnInvalidResult_ResultIsFalse(string objectSerializerResult) { // Arrange var objectToPersist = new PublishConfiguration(); string storageLocation = "temp-file"; var filesystemAccessor = new Mock<IFilesystemAccessor>(); var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>(); objectSerializer.Setup(o => o.Serialize(It.IsAny<PublishConfiguration>())).Returns(objectSerializerResult); var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object); // Act var result = filesystemPersistence.Save(objectToPersist, storageLocation); // Assert Assert.IsFalse(result); }
public void ToString_PublishLocationIsNull_ResultContainsName() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = null }; // Act string result = publishConfiguration.ToString(); // Assert Assert.IsTrue(result.Contains(publishConfiguration.Name)); }
public void ToString_ContainsRepositoryPublishLocation() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act string result = publishConfiguration.ToString(); // Assert Assert.IsTrue(result.Contains(publishConfiguration.PublishLocation)); }
public void ToString_ContainsApiKeyPlaceHolder_IfNotSet() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2", ApiKey = null }; // Act string result = publishConfiguration.ToString(); // Assert Assert.IsTrue(result.Contains("not-set")); }
public void GetHashCode_TwoIdenticalObjects_BothUninitialized_HashCodesAreEqual() { // Arrange var publishConfiguration1 = new PublishConfiguration(); var publishConfiguration2 = new PublishConfiguration(); // Act int hashCodeObject1 = publishConfiguration1.GetHashCode(); int hashCodeObject2 = publishConfiguration2.GetHashCode(); // Assert Assert.AreEqual(hashCodeObject1, hashCodeObject2); }
public void GetHashCode_TwoIdenticalObjects_BothInitialized_HashCodesAreEqual() { // Arrange var publishConfiguration1 = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; var publishConfiguration2 = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act int hashCodeObject1 = publishConfiguration1.GetHashCode(); int hashCodeObject2 = publishConfiguration2.GetHashCode(); // Assert Assert.AreEqual(hashCodeObject1, hashCodeObject2); }
public void GetHashCode_SameHashCodeIsReturnedEveryTimeTheMethodIsCalled_AsLongAsTheObjectDoesNotChange() { // Arrange string repositoryName = "Some Repository"; string repositoryPublishLocation = "http://example.com"; var publishConfiguration = new PublishConfiguration { Name = repositoryName, PublishLocation = repositoryPublishLocation }; int expectedHashcode = publishConfiguration.GetHashCode(); for (var i = 0; i < 100; i++) { // Act publishConfiguration.Name = repositoryName; publishConfiguration.PublishLocation = repositoryPublishLocation; int generatedHashCode = publishConfiguration.GetHashCode(); // Assert Assert.AreEqual(expectedHashcode, generatedHashCode); } }
public void GetHashCode_ForAllUniqueObject_AUniqueHashCodeIsReturned() { var hashCodes = new Dictionary<int, PublishConfiguration>(); for (var i = 0; i < 10000; i++) { // Act var publishConfiguration = new PublishConfiguration { Name = Guid.NewGuid().ToString(), PublishLocation = "http://" + Guid.NewGuid().ToString() }; int generatedHashCode = publishConfiguration.GetHashCode(); // Assert Assert.IsFalse(hashCodes.ContainsKey(generatedHashCode)); hashCodes.Add(generatedHashCode, publishConfiguration); } }
private bool SaveNewPublishConfigurationList(PublishConfiguration[] configurations) { return this.publishConfigurationPersistence.Save(configurations, this.configurationFilePath); }
public void PublishPackage_PublishConfigurationAccessorReturnsInvalidConfiguration_ResultIsFalse() { // Arrange string packagePath = @"C:\local-nuget-repo\package.nupkg"; string packageServerConfigurationName = "Nuget.org Publish Config"; var filesystemAccessor = new Mock<IFilesystemAccessor>(); var packageServerFactory = new Mock<IPackageServerFactory>(); var publishConfigurationAccessor = new Mock<IPublishConfigurationAccessor>(); filesystemAccessor.Setup(f => f.FileExists(packagePath)).Returns(true); var publishConfiguration = new PublishConfiguration(); publishConfigurationAccessor.Setup(p => p.GetPublishConfiguration(packageServerConfigurationName)).Returns(publishConfiguration); var publishingService = new PublishingService(filesystemAccessor.Object, packageServerFactory.Object, publishConfigurationAccessor.Object); // Act var result = publishingService.PublishPackage(packagePath, packageServerConfigurationName); // Assert Assert.AreEqual(ServiceResultType.Failure, result.Status); }
public void IsValid_PublishLocationIsNull_ResultIsFalse() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = null }; // Act bool result = publishConfiguration.IsValid; // Assert Assert.IsFalse(result); }
public void Serialization_IsValidPropertyIsNotSerialized() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act string json = JsonConvert.SerializeObject(publishConfiguration); // Assert Assert.IsFalse(json.Contains("IsValid")); Assert.IsFalse(json.Contains(publishConfiguration.IsValid.ToString(CultureInfo.InvariantCulture))); }
public void Save_PublishConfiguration_WriteSerializedJsonToStoreageLocation_Suceeeds_ResultIsTrue() { // Arrange var objectToPersist = new PublishConfiguration(); string storageLocation = "temp-file"; var filesystemAccessor = new Mock<IFilesystemAccessor>(); var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>(); objectSerializer.Setup(o => o.Serialize(It.IsAny<PublishConfiguration>())).Returns("[]"); filesystemAccessor.Setup(f => f.WriteContentToFile(It.IsAny<string>(), It.IsAny<string>())).Returns(true); var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object); // Act var result = filesystemPersistence.Save(objectToPersist, storageLocation); // Assert Assert.IsTrue(result); }
public void ToString_ContainsPublishLocationPlaceHolder_IfNotSet() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = null, ApiKey = "Some Api Key" }; // Act string result = publishConfiguration.ToString(); // Assert Assert.IsTrue(result.Contains("not-set")); }
public void IsLocal_PublishLocationIsAbsolute_IsRemoteLocation_ResultIsFalse(string publishLocation) { // Arrage var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = publishLocation }; // Act var result = publishConfiguration.IsLocal; // Assert Assert.IsFalse(result); }
public void ToString_PropertiesAreNotSet_ResultIsTypeName() { // Arrange var publishConfiguration = new PublishConfiguration(); // Act string result = publishConfiguration.ToString(); // Assert Assert.AreEqual(typeof(PublishConfiguration).Name, result); }
public void GetPublishConfiguration_ConfigurationNameParameterIsValid_PublishConfigurationPersistenceReturnsNoEntries_ResultIsNull() { // Arrange string configurationName = "Some non existing Configuration"; var applicationInformation = new ApplicationInformation { ConfigurationFileFolder = Environment.CurrentDirectory }; var publishConfigurationFactory = new Mock<IPublishConfigurationFactory>(); var publishConfigurationPersistence = new Mock<IFilesystemPersistence<PublishConfiguration[]>>(); var persitedConfigurations = new PublishConfiguration[] { }; publishConfigurationPersistence.Setup(p => p.Load(It.IsAny<string>())).Returns(persitedConfigurations); var configFilePublishConfigurationAccessor = new ConfigFilePublishConfigurationAccessor( applicationInformation, publishConfigurationFactory.Object, publishConfigurationPersistence.Object); // Act var result = configFilePublishConfigurationAccessor.GetPublishConfiguration(configurationName); // Assert Assert.IsNull(result); }
public void Save_PublishConfiguration_StorageLocationIsInvalid_ArgumentExceptionIsThrown(string storageLocation) { // Arrange var objectToPersist = new PublishConfiguration(); var filesystemAccessor = new Mock<IFilesystemAccessor>(); var objectSerializer = new Mock<IObjectSerializer<PublishConfiguration>>(); var filesystemPersistence = new FilesystemPersistence<PublishConfiguration>(filesystemAccessor.Object, objectSerializer.Object); // Act filesystemPersistence.Save(objectToPersist, storageLocation); }
public void IsSerializable() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act string json = JsonConvert.SerializeObject(publishConfiguration); // Assert Assert.IsTrue(json.Contains(publishConfiguration.Name)); Assert.IsTrue(json.Contains(publishConfiguration.PublishLocation)); }
public void IsLocal_PublishLocationIsRelative_ResultIsTrue(string publishLocation) { // Arrage var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = publishLocation }; // Act var result = publishConfiguration.IsLocal; // Assert Assert.IsTrue(result); }
public void IsValid_NameIsSet_PublishLocationIsSet_ResultIsTrue() { // Arrange var publishConfiguration = new PublishConfiguration { Name = "Some Repository", PublishLocation = "http://nuget.org/api/v2" }; // Act bool result = publishConfiguration.IsValid; // Assert Assert.IsTrue(result); }