Esempio n. 1
0
        public static FeatureDefinition ToFeatureDefinition(this SPFeatureDefinition spFeatureDefinition, string definitionInstallationScope)
        {
            var cultureInfo = new System.Globalization.CultureInfo(1033);

            if (spFeatureDefinition == null)
            {
                return(null);
            }

            var fd = FeatureDefinitionFactory.GetFeatureDefinition(
                spFeatureDefinition.Id,
                spFeatureDefinition.CompatibilityLevel,
                spFeatureDefinition.GetDescription(cultureInfo),
                spFeatureDefinition.DisplayName,
                spFeatureDefinition.Hidden,
                spFeatureDefinition.Name,
                spFeatureDefinition.Properties == null ? null :
                spFeatureDefinition.Properties.ToProperties(),
                spFeatureDefinition.Scope.ToScope(),
                spFeatureDefinition.GetTitle(cultureInfo),
                spFeatureDefinition.SolutionId,
                spFeatureDefinition.UIVersion,
                spFeatureDefinition.Version,
                definitionInstallationScope);

            return(fd);
        }
        // Following needs to be equal:
        // FeatureId, LocationId
        public void ActiveFeaturesWithSameFeatureIdAndLocationIdAreEqual()
        {
            // Arrange
            var referenceFeatureDefinition = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScope
                );

            ActivatedFeature referenceFeature = ActivatedFeatureFactory.GetActivatedFeature(
                Id,
                Locations.ActivatedRootWeb.Guid,
                referenceFeatureDefinition,
                Faulty, Properties, TimeActivated,
                Version, DefinitioninstallationScope
                );



            // Act

            var definitionDifferent = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                null,
                null, HiddenDifferent,
                Name, null,
                Scope,
                null,
                Guid.Empty, null,
                null, DefinitioninstallationScope
                );

            var equalFeature = ActivatedFeatureFactory.GetActivatedFeature(
                Id,
                Locations.ActivatedRootWeb.Guid,
                definitionDifferent,
                FaultyDifferent, PropertiesDifferent, TimeActivatedDifferent,
                VersionDifferent, DefinitioninstallationScopeDifferent
                );

            var equalFeatureEmpty = ActivatedFeatureFactory.GetActivatedFeature(
                Id,
                Locations.ActivatedRootWeb.Guid,
                null,
                FaultyDifferent, null, DateTime.MinValue,
                null, null
                );

            // Assert

            Assert.Equal(referenceFeature, equalFeature);

            Assert.Equal(referenceFeature, equalFeatureEmpty);
        }
        // Following needs to be equal:
        // FeatureId, Compatibility level, Name, Scope, DefinitioninstallationScope
        public void DefinitionsWithSameFeatureIdCompLevelNameAndScopeAreEqual()
        {
            // Arrange
            var referenceFeature = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScope
                );

            ActivatedFeature ActiveFeature1 = ActivatedFeatureFactory.GetActivatedFeature(
                Id,
                Locations.ActivatedRootWeb.Guid,
                referenceFeature,
                Faulty, null, DateTime.Now,
                Version
                );

            referenceFeature.ToggleActivatedFeature(ActiveFeature1, true);

            // Act
            var equalFeature = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                DescriptionDifferent,
                DisplayNameDifferent, HiddenDifferent,
                Name, PropertiesDifferent,
                Scope,
                TitleDifferent,
                SolutionIdDifferent, UiVersionDifferent,
                VersionDifferent, DefinitioninstallationScope
                );

            // Assert

            Assert.Equal(referenceFeature, equalFeature);

            // Act
            var equalFeatureEmpty = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                null,
                null, HiddenDifferent,
                Name, null,
                Scope,
                null,
                Guid.Empty, null,
                null, DefinitioninstallationScope
                );

            // Assert

            Assert.Equal(referenceFeature, equalFeatureEmpty);
        }
Esempio n. 4
0
        // Following needs to be equal:
        // FeatureId, LocationId
        public void ActiveFeaturesWithDifferentFeatureIdOrLocationIdAreNotEqual()
        {
            // Arrange
            var referenceFeatureDefinition = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version
                );

            ActivatedFeature referenceFeature = ActivatedFeatureFactory.GetActivatedFeature(
                referenceFeatureDefinition.UniqueIdentifier,
                SolutionId.ToString(),
                referenceFeatureDefinition.DisplayName,
                Faulty, Properties, TimeActivated,
                Version, referenceFeatureDefinition.Version
                );


            // Act
            var notEqualFeatureId = ActivatedFeatureFactory.GetActivatedFeature(
                IdDifferent.ToString(),
                SolutionId.ToString(),
                referenceFeatureDefinition.DisplayName,
                Faulty, Properties, TimeActivated,
                Version, referenceFeatureDefinition.Version
                );

            var notEqualLocationId = ActivatedFeatureFactory.GetActivatedFeature(
                referenceFeatureDefinition.UniqueIdentifier,
                SolutionIdDifferent.ToString(),
                referenceFeatureDefinition.DisplayName,
                Faulty, Properties, TimeActivated,
                Version, referenceFeatureDefinition.Version
                );

            // Assert

            Assert.NotEqual(referenceFeature, notEqualFeatureId);
            Assert.NotEqual(referenceFeature, notEqualLocationId);
        }
Esempio n. 5
0
        public static ActivatedFeature ToActivatedFeature(this SPFeature spFeature, Guid parentId, Scope parentScope, string parentUrl)
        {
            FeatureDefinition definition = null;
            bool faulty = false;

            string definitionInstallationScope = GetDefinitionInstallationScope(spFeature.FeatureDefinitionScope == SPFeatureDefinitionScope.Farm, parentUrl);

            try
            {
                if (spFeature.Definition != null)
                {
                    var fDef = spFeature.Definition;
                    definition = fDef.ToFeatureDefinition(definitionInstallationScope);
                }
                else
                {
                    definition = FeatureDefinitionFactory.GetFaultyDefinition(spFeature.DefinitionId, parentScope, spFeature.Version, definitionInstallationScope);
                    faulty     = true;
                }
            }
            catch (Exception)
            {
                faulty = true;
            }


            var feature = ActivatedFeatureFactory.GetActivatedFeature(
                spFeature.DefinitionId,
                parentId,
                definition,
                faulty,
                spFeature.Properties == null ? null :
                spFeature.Properties.ToProperties(),
                spFeature.TimeActivated,
                spFeature.Version,
                definitionInstallationScope
                );

            return(feature);
        }
Esempio n. 6
0
        public static FeatureDefinition ToFeatureDefinition(this SPFeatureDefinition spFeatureDefinition, string sandboxedSolutionLocationId)
        {
            var cultureInfo = new System.Globalization.CultureInfo(1033);

            if (spFeatureDefinition == null)
            {
                return(null);
            }

            // If a feature definition is removed or orphaned, scope is set to undefined
            // therefore, scope is checked first and set in all exceptions later
            Scope defScope;

            try
            {
                defScope = spFeatureDefinition.Scope.ToScope();
            }
            catch (Exception)
            {
                defScope = Scope.ScopeInvalid;
            }

            Guid defId;

            try
            {
                defId = spFeatureDefinition.Id;
            }
            catch (Exception)
            {
                defId    = Guid.Empty;
                defScope = Scope.ScopeInvalid;
            }

            int defCompatibilityLevel;

            try
            {
                defCompatibilityLevel = spFeatureDefinition.CompatibilityLevel;
            }
            catch (Exception)
            {
                defCompatibilityLevel = 0;
                defScope = Scope.ScopeInvalid;
            }



            string defDescription;

            try
            {
                defDescription = spFeatureDefinition.GetDescription(cultureInfo);
            }
            catch (Exception ex)
            {
                defDescription = ex.Message;
                defScope       = Scope.ScopeInvalid;
            }

            string defDisplayName;

            try
            {
                defDisplayName = spFeatureDefinition.DisplayName;
            }
            catch (Exception ex)
            {
                defDisplayName = ex.Message;
                defScope       = Scope.ScopeInvalid;
            }


            bool defHidden;

            try
            {
                defHidden = spFeatureDefinition.Hidden;
            }
            catch (Exception)
            {
                defHidden = false;
                defScope  = Scope.ScopeInvalid;
            }

            string defName;

            try
            {
                defName = spFeatureDefinition.Name;
            }
            catch (Exception ex)
            {
                defName  = ex.Message;
                defScope = Scope.ScopeInvalid;
            }

            Dictionary <string, string> defProperties;

            try
            {
                defProperties = spFeatureDefinition.Properties == null ? null :
                                spFeatureDefinition.Properties.ToProperties();
            }
            catch (Exception)
            {
                defProperties = null;
                defScope      = Scope.ScopeInvalid;
            }

            string defTitle;

            try
            {
                defTitle = spFeatureDefinition.GetTitle(cultureInfo);
            }
            catch (Exception ex)
            {
                defTitle = ex.Message;
                defScope = Scope.ScopeInvalid;
            }

            Guid defSolutionId;

            try
            {
                defSolutionId = spFeatureDefinition.SolutionId;
            }
            catch (Exception)
            {
                defSolutionId = Guid.Empty;
                defScope      = Scope.ScopeInvalid;
            }

            string defUIVersion;

            try
            {
                defUIVersion = spFeatureDefinition.UIVersion;
            }
            catch (Exception)
            {
                defUIVersion = string.Empty;
                defScope     = Scope.ScopeInvalid;
            }

            Version defVersion;

            try
            {
                defVersion = spFeatureDefinition.Version;
            }
            catch (Exception)
            {
                defVersion = new Version("0.0.0.0");
                defScope   = Scope.ScopeInvalid;
            }

            var fd = FeatureDefinitionFactory.GetFeatureDefinition(
                defId,
                defCompatibilityLevel,
                defDescription,
                defDisplayName,
                defHidden,
                defName,
                defProperties,
                defScope,
                defTitle,
                defSolutionId,
                defUIVersion,
                defVersion,
                sandboxedSolutionLocationId);

            return(fd);
        }
        // Following needs to be equal:
        // FeatureId, Compatibility level, Name, Scope, DefinitioninstallationScope
        public void DefinitionsWithDifferentFeatureIdCompLevelNameOrScopeAreNotEqual()
        {
            // Arrange
            var referenceFeature = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScope
                );

            ActivatedFeature ActiveFeature1 = ActivatedFeatureFactory.GetActivatedFeature(
                Id,
                Locations.ActivatedRootWeb.Guid,
                referenceFeature,
                Faulty, null, DateTime.Now,
                Version
                );

            referenceFeature.ToggleActivatedFeature(ActiveFeature1, true);

            // Act
            var notEqualFeatureId = FeatureDefinitionFactory.GetFeatureDefinition(
                IdDifferent, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScope
                );

            var notEqualFeatureCompatibility = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevelDifferent,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScope
                );

            var notEqualFeatureScope = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                ScopeDifferent,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScope
                );

            var notEqualFeatureName = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                NameDifferent, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScope
                );

            var notEqualFeatureDefInstScope = FeatureDefinitionFactory.GetFeatureDefinition(
                Id, CompatibilityLevel,
                Description,
                DisplayName, Hidden,
                Name, Properties,
                Scope,
                Title,
                SolutionId, UiVersion,
                Version, DefinitioninstallationScopeDifferent
                );

            // Assert

            Assert.NotEqual(referenceFeature, notEqualFeatureId);
            Assert.NotEqual(referenceFeature, notEqualFeatureCompatibility);
            Assert.NotEqual(referenceFeature, notEqualFeatureName);
            Assert.NotEqual(referenceFeature, notEqualFeatureScope);
            Assert.NotEqual(referenceFeature, notEqualFeatureDefInstScope);
        }