public void TranslateNotificationToPersonalization_OnSuccess_ExecutesCorrectly()
        {
            // Arrange
            const string ExpectedCommand = "spNTranslateNotificationToPersonalization";
            var          executedCommand = string.Empty;
            var          notification    = CreateEPMNotification();
            var          connection      = new SqlConnection();
            var          user            = new ShimSPUser
            {
                LoginNameGet = () => DummyString,
                IDGet        = () => 1
            }.Instance;
            var args = new object[] { notification, new SqlConnection(), user };

            ShimSqlCommand.AllInstances.ExecuteNonQuery = command =>
            {
                executedCommand = command.CommandText;
                return(1);
            };

            // Act
            privateType.InvokeStatic(TranslateNotificationToPersonalizationMethodName, args);

            // Assert
            executedCommand.ShouldSatisfyAllConditions(
                () => executedCommand.ShouldNotBeNullOrEmpty(),
                () => executedCommand.ShouldBe(ExpectedCommand));
        }
예제 #2
0
        private object ConvertValueForFieldType(SPFieldType fieldType, string stringValue)
        {
            switch (fieldType)
            {
            case SPFieldType.DateTime:
                return(DateTime.Parse(stringValue));

            case SPFieldType.Counter:
            case SPFieldType.Integer:
            case SPFieldType.Lookup:
                return(int.Parse(stringValue));

            case SPFieldType.Number:
                return(double.Parse(stringValue));

            case SPFieldType.User:
                var user = new ShimSPUser()
                {
                    IDGet        = () => int.Parse(stringValue),
                    LoginNameGet = () => stringValue
                };

                return(user.Instance);

            case SPFieldType.AllDayEvent:
            case SPFieldType.Attachments:
            case SPFieldType.Boolean:
            case SPFieldType.Calculated:
            case SPFieldType.Choice:
            case SPFieldType.Computed:
            case SPFieldType.ContentTypeId:
            case SPFieldType.CrossProjectLink:
            case SPFieldType.Currency:
            case SPFieldType.Error:
            case SPFieldType.File:
            case SPFieldType.Geolocation:
            case SPFieldType.GridChoice:
            case SPFieldType.Guid:
            case SPFieldType.Invalid:
            case SPFieldType.MaxItems:
            case SPFieldType.ModStat:
            case SPFieldType.MultiChoice:
            case SPFieldType.Note:
            case SPFieldType.OutcomeChoice:
            case SPFieldType.PageSeparator:
            case SPFieldType.Recurrence:
            case SPFieldType.Text:
            case SPFieldType.ThreadIndex:
            case SPFieldType.Threading:
            case SPFieldType.URL:
            case SPFieldType.WorkflowEventType:
            case SPFieldType.WorkflowStatus:
                break;
            }

            return(stringValue);
        }
        public void TranslateNotificationToPersonalization_SqlConnectionNull_ThrowsExcetion()
        {
            // Arrange
            var notification = CreateEPMNotification();
            var user         = new ShimSPUser().Instance;
            var args         = new object[] { notification, null, user };

            // Act
            Action action = () => privateType.InvokeStatic(TranslateNotificationToPersonalizationMethodName, args);

            // Assert
            action.ShouldThrow <ArgumentNullException>();
        }
예제 #4
0
        private void ShimSPWebMethods()
        {
            var user = new ShimSPUser
            {
                IDGet = () => Id
            };

            _shimWeb = new ShimSPWeb
            {
                IDGet               = () => DummyGuid,
                CurrentUserGet      = () => user,
                EnsureUserString    = _ => user,
                SiteUserInfoListGet = () => _shimList.Instance,
                ListsGet            = () => _shimListCollection.Instance
            };
        }
예제 #5
0
        public void IQueueItemMessageByListIteam_Called_Disposed()
        {
            // Arrange
            var shimUser = new ShimSPUser();

            var arguments = new object[]
            {
                1,
                true,
                new Hashtable()
                {
                    { "building", "64" }
                },
                new string[] { "177", "401" },
                new string[] { "919" },
                true,
                true,
                (SPListItem)CreateShimSpListItem(_webAppGuid1),
                (SPUser)shimUser,
                false
            };

            // Act
            _apiEmailPrivate.Invoke("iQueueItemMessage", BindingFlags.Static | BindingFlags.NonPublic, arguments);

            // Assert
            AssertConnection();

            Assert.AreEqual(1, _executeReaderCommandsCalled.Count);
            Assert.AreSame(_createdConnection, _executeReaderCommandsCalled[0].Connection);
            Assert.AreEqual(CommandType.Text, _executeReaderCommandsCalled[0].CommandType);
            Assert.IsTrue(
                "SELECT id from NOTIFICATIONS where listid=@listid and itemid=@itemid and type=@type"
                .Equals(_executeReaderCommandsCalled[0].CommandText, StringComparison.OrdinalIgnoreCase));
            Assert.AreEqual(3, _executeReaderCommandsCalled[0].Parameters.Count);
            Assert.AreEqual("@listid", _executeReaderCommandsCalled[0].Parameters[0].ParameterName);
            Assert.AreEqual("@itemid", _executeReaderCommandsCalled[0].Parameters[1].ParameterName);
            Assert.AreEqual("@type", _executeReaderCommandsCalled[0].Parameters[2].ParameterName);

            AssertNonQueryComands(ListItemId, _listParentListId);
            AssertDataSetCommand();

            Assert.AreEqual(7, _createdCommands.Count);
            Assert.AreEqual(7, _disposedCommands.Count);
            AssertCreatedCommandsDisposed();
        }
        private void ShimSPWebMethods()
        {
            var user = new ShimSPUser
            {
                IDGet = () => Id
            };

            _shimWeb = new ShimSPWeb
            {
                IDGet               = () => DummyGuid,
                CurrentUserGet      = () => user,
                EnsureUserString    = _ => user,
                SiteUserInfoListGet = () => _shimList.Instance,
                ListsGet            = () => _shimListCollection.Instance,
                Close               = () => { _webClosed = true; },
                UrlGet              = () => ExampleUrl
            };
        }
예제 #7
0
 private void SetupVariables()
 {
     validations       = 0;
     publicInstance    = BindingFlags.Instance | BindingFlags.Public;
     nonPublicInstance = BindingFlags.Instance | BindingFlags.NonPublic;
     guid  = Guid.Parse(SampleGuidString1);
     spWeb = new ShimSPWeb()
     {
         IDGet    = () => guid,
         ListsGet = () => spListCollection,
         AllowUnsafeUpdatesSetBoolean = _ => { },
         AllUsersGet        = () => new ShimSPUserCollection(),
         SiteGroupsGet      = () => new ShimSPGroupCollection(),
         RoleDefinitionsGet = () => new ShimSPRoleDefinitionCollection()
     };
     spSite = new ShimSPSite()
     {
         IDGet = () => guid
     };
     spListCollection = new ShimSPListCollection()
     {
         ItemGetGuid = _ => spList
     };
     spList = new ShimSPList()
     {
         IDGet            = () => guid,
         FieldsGet        = () => spFieldCollection,
         GetItemByIdInt32 = _ => spListItem
     };
     spListItemCollection = new ShimSPListItemCollection();
     spListItem           = new ShimSPListItem()
     {
         IDGet         = () => DummyInt,
         TitleGet      = () => DummyString,
         ItemGetString = _ => DummyString
     };
     spFieldCollection = new ShimSPFieldCollection();
     spField           = new ShimSPField();
     spUser            = new ShimSPUser();
     dataReader        = new ShimSqlDataReader()
     {
         Close = () => { }
     };
 }
예제 #8
0
        private object[] ShimCoreWebAndUser()
        {
            const string webTitle  = "WebTitle";
            const string webUrl    = "WebUrl";
            const string userName  = "******";
            const string userEmail = "*****@*****.**";
            const string userLogin = "******";

            ShimIQueueItemMessage();
            var    shimConnection = new ShimSqlConnection();
            string body           = null;
            string subject        = null;

            var shimSpWeb = new ShimSPWeb
            {
                TitleGet = () => webTitle,
                UrlGet   = () => webUrl
            };

            var shimCurrentUser = new ShimSPUser
            {
                NameGet      = () => userName,
                EmailGet     = () => userEmail,
                LoginNameGet = () => userLogin
            };

            var arguments = new object[]
            {
                (SqlConnection)shimConnection,
                23,
                body,
                subject,
                (SPWeb)shimSpWeb,
                (SPUser)shimCurrentUser
            };

            return(arguments);
        }
        public void TestGetUsersForSiteReturnsLoginNamesOfAllDefinedUsers()
        {
            // Arrange.
            using (new SharePointEmulationScope())
            {
                ShimSPUser user1 = new ShimSPUser() {LoginNameGet = () => @"DOMAIN\user1"};
                ShimSPUser user2 = new ShimSPUser() {LoginNameGet = () => @"EXTERNAL\some.user"};
                ShimSPUser user3 = new ShimSPUser() {LoginNameGet = () => "*****@*****.**"};
                ShimSPUser user4 = new ShimSPUser() {LoginNameGet = () => "mike.test"};
                List<ShimSPUser> masterUsers = new List<ShimSPUser>() { user1, user2, user3, user4 };

                ShimSPWeb web = new ShimSPWeb();
                ShimSPUserCollection coll = new ShimSPUserCollection();
                coll.CountGet = () => masterUsers.Count;
                coll.GetByIDInt32 = (id) => masterUsers.ElementAt(id);
                coll.ItemGetInt32 = (id) => masterUsers.ElementAt(id);
                coll.ItemAtIndexInt32 = (id) => masterUsers.ElementAt(id);
                web.UsersGet = () => coll;
                ShimSPSite.ConstructorString = (instance, url) =>
                    {
                        ShimSPSite site = new ShimSPSite(instance);
                        site.Dispose = () => { };
                        site.OpenWeb = () => web;
                    };
                WebSiteManager manager = new WebSiteManager("http://test");

                // Act.
                IEnumerable<string> users = manager.GetUsersForSite();

                // Assert.
                Assert.IsTrue(users.Contains(user1.Instance.LoginName));
                Assert.IsTrue(users.Contains(user2.Instance.LoginName));
                Assert.IsTrue(users.Contains(user3.Instance.LoginName));
                Assert.IsTrue(users.Contains(user4.Instance.LoginName));
            }
        }
예제 #10
0
        public void AddBasicSecurityGroupsTest()
        {
            using (new SPEmulators.SPEmulationContext(SPEmulators.IsolationLevel.Fake))
            {
                var user = new ShimSPUser()
                {
                    IDGet = () =>
                    {
                        return(1073741823);
                    }
                };

                var listitem = new ShimSPListItem()
                {
                    ItemGetGuid = (guid) =>
                    {
                        return(Guid.NewGuid());
                    },
                    IDGet = () =>
                    {
                        return(1);
                    },
                    TitleGet = () =>
                    {
                        return("Adam Bar");
                    },
                    SystemUpdate = () => { }
                    ,
                    FieldsGet = () =>
                    {
                        return(new ShimSPFieldCollection()
                        {
                            GetFieldByInternalNameString = (s) =>
                            {
                                return new ShimSPField()
                                {
                                    IdGet = () => { return Guid.NewGuid(); }
                                };
                            },
                            ItemGetGuid = (guid) =>
                            {
                                return new ShimSPField()
                                {
                                    IdGet = () => { return Guid.NewGuid(); }
                                };
                            }
                        });
                    },
                    ItemSetGuidObject = (a, b) => { },
                    Update            = () => { }
                };

                ShimSPList list = new ShimSPList()
                {
                    ItemsGet = () =>
                    {
                        return(new ShimSPListItemCollection()
                        {
                            GetItemByIdInt32 = (id) =>
                            {
                                return listitem;
                            }
                        });
                    }
                };

                ShimCoreFunctions.AddGroupSPWebStringStringSPMemberSPUserString = (a, b, c, d, e, f) => { return("final"); };

                ShimSPWeb fakespweb = fakespweb = new ShimSPWeb()
                {
                    IDGet = () =>
                    {
                        return(Guid.Parse("D4A8A5A3-5C26-45D0-876C-AC2B4FB86D03"));
                    },
                    CurrentUserGet = () =>
                    {
                        return(user);
                    },
                    SiteGroupsGet = () =>
                    {
                        return(new ShimSPGroupCollection()
                        {
                            ItemGetString = (id) =>
                            {
                                return new ShimSPGroup()
                                {
                                    NameGet = () => { return Guid.NewGuid().ToString(); }
                                };
                            }
                        });
                    },
                    AllowUnsafeUpdatesSetBoolean = (b) => { },
                    SiteGet = () =>
                    {
                        return(new ShimSPSite()
                        {
                            UrlGet = () =>
                            {
                                return "";
                            },
                            OpenWebGuid = (gg) =>
                            {
                                return new ShimSPWeb()
                                {
                                    IDGet = () =>
                                    {
                                        return Guid.Parse("D4A8A5A3-5C26-45D0-876C-AC2B4FB86D03");
                                    },
                                    PropertiesGet = () =>
                                    {
                                        var propertyBag = new ShimSPPropertyBag();
                                        var sd = new ShimStringDictionary(propertyBag);
                                        sd.ItemGetString = (key) =>
                                        {
                                            return "EPMLive_MyWork_Grid_GlobalViews";
                                        };
                                        return propertyBag;
                                    },
                                    SiteGet = () =>
                                    {
                                        return new ShimSPSite()
                                        {
                                            IDGet = () =>
                                            {
                                                return Guid.Parse("D4A8A5A3-5C26-45D0-876C-AC2B4FB86D03");
                                            }
                                        };
                                    },
                                    Dispose = () => { },
                                    AllowUnsafeUpdatesSetBoolean = (b) => { }
                                };
                            },
                            RootWebGet = () =>
                            {
                                return new ShimSPWeb()
                                {
                                    ListsGet = () =>
                                    {
                                        return new ShimSPListCollection()
                                        {
                                            ItemGetString = (s) =>
                                            {
                                                return list;
                                            }
                                        };
                                    },
                                    IDGet = () =>
                                    {
                                        return Guid.Parse("D4A8A5A3-5C26-45D0-876C-AC2B4FB86D03");
                                    }
                                };
                            }
                        });
                    },
                    ParentWebGet = () =>
                    {
                        return(null);
                    },
                    PropertiesGet = () =>
                    {
                        var propertyBag = new ShimSPPropertyBag();
                        var sd          = new ShimStringDictionary(propertyBag);
                        sd.ItemGetString = (key) =>
                        {
                            return("EPMLiveLockConfig");
                        };
                        return(propertyBag);
                    }
                    ,
                    Update = () => { }
                };
                fakespweb.Dispose = () => { };

                var objSecurityUpdates = new SecurityUpdate();
                var dict = objSecurityUpdates.AddBasicSecurityGroups(fakespweb, "title", user, listitem);

                Assert.IsTrue(dict.Count == 3);
            }
        }
예제 #11
0
        private object ConvertValueForFieldType(SPFieldType fieldType, string stringValue)
        {
            switch (fieldType)
            {
                case SPFieldType.DateTime:
                    return DateTime.Parse(stringValue);

                case SPFieldType.Counter:
                case SPFieldType.Integer:
                case SPFieldType.Lookup:
                    return int.Parse(stringValue);

                case SPFieldType.Number:
                    return double.Parse(stringValue);

                case SPFieldType.User:
                    var user = new ShimSPUser()
                    { 
                        IDGet = () => int.Parse(stringValue),
                        LoginNameGet = () => stringValue
                    };

                    return user.Instance;

                case SPFieldType.AllDayEvent:
                case SPFieldType.Attachments:
                case SPFieldType.Boolean:
                case SPFieldType.Calculated:
                case SPFieldType.Choice:
                case SPFieldType.Computed:
                case SPFieldType.ContentTypeId:
                case SPFieldType.CrossProjectLink:
                case SPFieldType.Currency:
                case SPFieldType.Error:
                case SPFieldType.File:
                case SPFieldType.Geolocation:
                case SPFieldType.GridChoice:
                case SPFieldType.Guid:
                case SPFieldType.Invalid:
                case SPFieldType.MaxItems:
                case SPFieldType.ModStat:
                case SPFieldType.MultiChoice:
                case SPFieldType.Note:
                case SPFieldType.OutcomeChoice:
                case SPFieldType.PageSeparator:
                case SPFieldType.Recurrence:
                case SPFieldType.Text:
                case SPFieldType.ThreadIndex:
                case SPFieldType.Threading:
                case SPFieldType.URL:
                case SPFieldType.WorkflowEventType:
                case SPFieldType.WorkflowStatus:
                    break;
            }

            return stringValue;
        }
 private void SetupVariables()
 {
     guid    = new Guid(GuidString);
     spFarm  = new ShimSPFarm();
     spField = new ShimSPField();
     spList  = new ShimSPList()
     {
         FieldsGet = () => new ShimSPFieldCollection()
         {
             GetFieldByInternalNameString = _ => spField
         },
         IDGet = () => guid
     };
     spListItem = new ShimSPListItem()
     {
         ParentListGet = () => spList,
         FieldsGet     = () => new ShimSPFieldCollection(),
         IDGet         = () => 1
     };
     spSite = new ShimSPSite()
     {
         WebApplicationGet = () => new ShimSPWebApplication()
         {
             ApplicationPoolGet = () => new ShimSPApplicationPool()
         }
     };
     spUser = new ShimSPUser()
     {
         LoginNameGet = () => DummyString,
         EmailGet     = () => DummyString,
         IDGet        = () => 1
     };
     spWeb = new ShimSPWeb()
     {
         ListsGet = () => new ShimSPListCollection()
         {
             ItemGetString = _ => spList
         },
         SiteGet        = () => spSite,
         CurrentUserGet = () => spUser,
         AllUsersGet    = () => new ShimSPUserCollection()
         {
             GetByIDInt32 = _ => spUser
         },
         IDGet   = () => guid,
         WebsGet = () => new ShimSPWebCollection()
         {
             AddStringStringStringUInt32StringBooleanBoolean = (_, _1, _2, _3, _4, _5, _6) => spWeb
         },
         NavigationGet = () => new ShimSPNavigation()
         {
             TopNavigationBarGet = () => new ShimSPNavigationNodeCollection()
             {
                 NavigationGet = () => new ShimSPNavigation()
             }
         },
         SiteGroupsGet = () => new ShimSPGroupCollection()
         {
             GetByIDInt32 = _ => new ShimSPGroup()
         },
         UrlGet = () => DummyString,
         ServerRelativeUrlGet         = () => DummyString,
         TitleGet                     = () => DummyString,
         AllowUnsafeUpdatesSetBoolean = _ => { },
         SiteUserInfoListGet          = () => spList,
         SiteUsersGet                 = () => new ShimSPUserCollection()
         {
             GetByIDInt32 = _ => spUser
         },
         EnsureUserString = _ => spUser
     };
 }
예제 #13
0
 private void SetupVariables()
 {
     validations       = 0;
     publicStatic      = BindingFlags.Static | BindingFlags.Public;
     nonPublicStatic   = BindingFlags.Static | BindingFlags.NonPublic;
     publicInstance    = BindingFlags.Instance | BindingFlags.Public;
     nonPublicInstance = BindingFlags.Instance | BindingFlags.NonPublic;
     guid    = Guid.Parse(SampleGuidString1);
     request = new Dictionary <string, string>()
     {
         ["period"]     = DummyString,
         ["action"]     = DummyString,
         ["duser"]      = DummyString,
         ["ts_uids"]    = DummyString,
         ["tsitemuids"] = DummyString
     };
     currentDate = DateTime.Now;
     spWeb       = new ShimSPWeb()
     {
         IDGet                = () => guid,
         SiteGet              = () => spSite,
         ListsGet             = () => spListCollection,
         GetFolderString      = _ => spFolder,
         GetFileString        = _ => spFile,
         FoldersGet           = () => spFolderCollection,
         CurrentUserGet       = () => spUser,
         ServerRelativeUrlGet = () => SampleUrl,
         AllUsersGet          = () => new ShimSPUserCollection(),
         SiteUsersGet         = () => new ShimSPUserCollection(),
         TitleGet             = () => DummyString
     };
     spSite = new ShimSPSite()
     {
         IDGet             = () => guid,
         WebApplicationGet = () => new ShimSPWebApplication(),
         RootWebGet        = () => spWeb,
         FeaturesGet       = () => new ShimSPFeatureCollection()
         {
             ItemGetGuid = _ => new ShimSPFeature()
         },
         ContentDatabaseGet = () => new ShimSPContentDatabase()
     };
     spListCollection = new ShimSPListCollection()
     {
         TryGetListString = _ => spList,
         ItemGetString    = _ => spList,
         ItemGetGuid      = _ => spList
     };
     spList = new ShimSPList()
     {
         IDGet             = () => guid,
         FieldsGet         = () => spFieldCollection,
         GetItemByIdInt32  = _ => spListItem,
         ItemsGet          = () => spListItemCollection,
         GetItemsSPQuery   = _ => spListItemCollection,
         RootFolderGet     = () => spFolder,
         ParentWebGet      = () => spWeb,
         DefaultViewGet    = () => spView,
         ViewsGet          = () => spViewCollection,
         ContentTypesGet   = () => spContentTypeCollection,
         TitleGet          = () => DummyString,
         EventReceiversGet = () => new ShimSPEventReceiverDefinitionCollection(),
         DefaultViewUrlGet = () => SampleUrl
     };
     spListItemCollection = new ShimSPListItemCollection()
     {
         CountGet     = () => DummyInt,
         ItemGetInt32 = _ => spListItem
     };
     spListItem = new ShimSPListItem()
     {
         IDGet             = () => DummyInt,
         TitleGet          = () => DummyString,
         ItemGetString     = _ => DummyString,
         ItemGetGuid       = _ => DummyString,
         ItemSetGuidObject = (_, __) => { },
         Update            = () => { },
         FileGet           = () => spFile,
         ParentListGet     = () => spList,
         NameGet           = () => DummyString
     };
     spFieldCollection = new ShimSPFieldCollection()
     {
         GetFieldByInternalNameString = _ => spField,
         ContainsFieldString          = _ => false,
         GetFieldString = _ => spField,
         ItemGetString  = _ => spField
     };
     spField = new ShimSPField()
     {
         IdGet            = () => guid,
         TitleGet         = () => DummyString,
         InternalNameGet  = () => DummyString,
         ReadOnlyFieldGet = () => false,
         HiddenGet        = () => false,
         ReorderableGet   = () => true,
         TypeAsStringGet  = () => DummyString
     };
     spUser = new ShimSPUser()
     {
         IDGet          = () => DummyInt,
         IsSiteAdminGet = () => true,
         UserTokenGet   = () => new ShimSPUserToken(),
         EmailGet       = () => DummyString
     };
     spFolderCollection = new ShimSPFolderCollection()
     {
         ItemGetString = _ => spFolder,
         AddString     = _ => spFolder
     };
     spFolder = new ShimSPFolder()
     {
         ExistsGet     = () => false,
         SubFoldersGet = () => spFolderCollection,
         FilesGet      = () => spFileCollection,
         UrlGet        = () => SampleUrl,
         UniqueIdGet   = () => guid,
         ParentWebGet  = () => spWeb
     };
     spFileCollection = new ShimSPFileCollection()
     {
         CountGet = () => DummyInt,
         AddStringByteArrayBoolean = (_1, _2, _3) => spFile,
         AddStringStream           = (_1, _2) => spFile,
         ItemGetString             = _ => spFile
     };
     spFile = new ShimSPFile()
     {
         Delete                 = () => { },
         OpenBinaryStream       = () => null,
         NameGet                = () => DummyString,
         GetListItemStringArray = _ => spListItem
     };
     spViewCollection = new ShimSPViewCollection()
     {
         ItemGetString = _ => spView
     };
     spView = new ShimSPView()
     {
         ViewFieldsGet        = () => spViewFieldCollection,
         ServerRelativeUrlGet = () => SampleUrl
     };
     spViewFieldCollection   = new ShimSPViewFieldCollection();
     spContentTypeCollection = new ShimSPContentTypeCollection()
     {
         ItemGetString = _ => spContentType
     };
     spContentType = new ShimSPContentType()
     {
         IdGet         = () => default(SPContentTypeId),
         FieldLinksGet = () => spFieldLinkCollection
     };
     spFieldLinkCollection = new ShimSPFieldLinkCollection()
     {
         ItemGetGuid = _ => new ShimSPFieldLink()
     };
     transaction = new ShimSqlTransaction()
     {
         Commit   = () => { },
         Rollback = () => { }
     };
     dataReader = new ShimSqlDataReader()
     {
         Read             = () => false,
         GetInt32Int32    = _ => One,
         GetDateTimeInt32 = _ => currentDate,
         GetStringInt32   = _ => DummyString,
         GetGuidInt32     = _ => guid,
         Close            = () => { }
     };
 }
예제 #14
0
        private void ISendEmail_Called_Disposed(bool hideFrom, string curUserEmail)
        {
            // Arrange
            const string outboundEmail = "*****@*****.**";
            var          siteId        = new Guid("0E2FCE32-4507-452C-A8BF-D28C867DF0E9");
            var          webId         = new Guid("4008FE64-56A8-4DDF-99C7-AF3C45AEBDDA");

            var shimCurrentUser = new ShimSPUser
            {
                NameGet  = () => "CurUserName",
                EmailGet = () => curUserEmail
            };
            var currentUser = (SPUser)shimCurrentUser;
            var shimUser    = new ShimSPUser
            {
                NameGet  = () => "EUserName",
                EmailGet = () => "*****@*****.**"
            };
            var user = (SPUser)shimUser;

            var arguments = new object[]
            {
                1,
                hideFrom,
                siteId,
                webId,
                (SPUser)shimCurrentUser,
                (SPUser)shimUser,
                new Hashtable()
                {
                    { "building", "64" }
                }
            };

            ShimSPAdministrationWebApplication.LocalGet = () =>
            {
                var spAdministrationWebApplication = new ShimSPAdministrationWebApplication();
                var spWebApplication = new ShimSPWebApplication(spAdministrationWebApplication)
                {
                    OutboundMailServiceInstanceGet = () =>
                    {
                        var spOutboundMailServiceInstance = new ShimSPOutboundMailServiceInstance();
                        var spServiceInstance             = new ShimSPServiceInstance(spOutboundMailServiceInstance)
                        {
                            ServerGet = () => new ShimSPServer
                            {
                                AddressGet = () => "15th ave"
                            }
                        };
                        return(spOutboundMailServiceInstance);
                    },
                    OutboundMailSenderAddressGet = () => outboundEmail
                };
                return(spAdministrationWebApplication);
            };

            string      setHost        = null;
            MailMessage sentMessage    = null;
            var         clientDisposed = false;

            ShimSmtpClient.Constructor = client =>
            {
                new ShimSmtpClient(client)
                {
                    HostSetString = host =>
                    {
                        setHost = host;
                    },
                    SendMailMessage = message =>
                    {
                        sentMessage = message;
                    },
                    DisposeBoolean = disposing =>
                    {
                        clientDisposed = true;
                    }
                };
            };

            var messageDisposed = false;

            ShimMailMessage.AllInstances.DisposeBoolean = (message, disposing) =>
            {
                messageDisposed = true;
            };

            // Act
            _apiEmailPrivate.Invoke("iSendEmail", BindingFlags.Static | BindingFlags.NonPublic, arguments);

            // Assert
            AssertConnection();
            if (hideFrom)
            {
                Assert.AreEqual(outboundEmail, sentMessage.From.Address);
                Assert.IsTrue(string.IsNullOrWhiteSpace(sentMessage.From.DisplayName));
            }
            else if (string.IsNullOrWhiteSpace(curUserEmail))
            {
                Assert.AreEqual(outboundEmail, sentMessage.From.Address);
                Assert.AreEqual(currentUser.Name, sentMessage.From.DisplayName);
            }
            else
            {
                Assert.AreEqual(currentUser.Email, sentMessage.From.Address);
                Assert.AreEqual(currentUser.Name, sentMessage.From.DisplayName);
            }
            Assert.AreEqual(user.Email, sentMessage.To[0].Address);
            Assert.AreEqual("64 house", sentMessage.Subject);
            Assert.AreEqual("goose live in 64 house", sentMessage.Body);
            Assert.IsTrue(clientDisposed);
            Assert.IsTrue(messageDisposed);
        }
        private void SetupVariables()
        {
            guid = new Guid(GuidString);

            spSite = new ShimSPSite()
            {
                IDGet              = () => guid,
                UrlGet             = () => Url,
                ContentDatabaseGet = () => new ShimSPContentDatabase(),
                OpenWebGuid        = _ => spWeb
            };

            fields = new ShimSPFieldCollection()
            {
                ContainsFieldString = _1 => true
            };

            spListItem = new ShimSPListItem()
            {
                IDGet         = () => 1,
                FieldsGet     = () => fields,
                ItemGetString = _1 => DummyString
            };

            spList = new ShimSPList()
            {
                IDGet           = () => guid,
                TitleGet        = () => Title,
                GetItemsSPQuery = _ => new ShimSPListItemCollection()
                {
                    FieldsGet     = () => fields,
                    GetEnumerator = () => new List <SPListItem>()
                    {
                        spListItem
                    }.GetEnumerator()
                },
                GetItemByIdInt32 = _ => spListItem
            };

            var currentUser = new ShimSPUser()
            {
                IDGet               = () => 1,
                LoginNameGet        = () => DummyString,
                RegionalSettingsGet = () => new ShimSPRegionalSettings()
            };

            spWeb = new ShimSPWeb()
            {
                CurrentUserGet       = () => currentUser,
                SiteGet              = () => spSite,
                TitleGet             = () => Title,
                ServerRelativeUrlGet = () => ServerRelativeUrl,
                ListsGet             = () => new ShimSPListCollection()
                {
                    ItemGetString    = _ => spList,
                    ItemGetGuid      = _ => spList,
                    TryGetListString = _ => spList
                },
                UrlGet = () => Url
            };

            webApplication = new ShimSPWebApplication();
        }
예제 #16
0
        private void SetupShims()
        {
            _configJob        = new ShimUninstall().Instance;
            _privateConfigJob = new PrivateObject(_configJob);
            _privateConfigJob.SetFieldOrProperty(UserIdField, DummyInt);

            var spUser = new ShimSPUser
            {
                UserTokenGet   = () => new ShimSPUserToken(),
                IsSiteAdminGet = () => true
            };

            var spListItem = new ShimSPListItem
            {
                ParentListGet = () => _list,
                IDGet         = () => DummyInt,
                TitleGet      = () => DummyString,
                ItemGetString = item =>
                {
                    switch (item)
                    {
                    case "LinkedCommunity":
                    case "QuickLaunch":
                    case "TopNav":
                        return(DummyInt);

                    case "InstalledFiles":
                        return($@"<Files>
                                        <Folder Type='Folder' FullFile='{Folder1}/' Name='{Folder1}'></Folder>
                                        <Folder Type='Folder' FullFile='{Folder2}' Name='{Folder2}'>
                                            <File Type='File' FullFile='{File1}' Name='{File1}'></File>
                                        </Folder>
                                        <Folder Type='Folder' FullFile='{Folder3}/File' Name='{Folder3}'></Folder>
                                        <Folder Type='Folder' FullFile='{Folder4}' Name='{Folder4}' NoDelete='true'></Folder>
                                      </Files>");

                    default:
                        return(DummyString);
                    }
                },
                Update  = () => _listItemUpdated = true,
                Delete  = () => _listItemDeleted = true,
                Recycle = () =>
                {
                    _listItemRecycled = true;
                    return(Guid.NewGuid());
                }
            };

            _list = new ShimSPList
            {
                IDGet           = () => Guid.NewGuid(),
                GetItemsSPQuery = _ => new ShimSPListItemCollection
                {
                    CountGet     = () => DummyInt,
                    ItemGetInt32 = __ => spListItem
                }.Bind(new SPListItem[]
                {
                    spListItem
                }),
                ParentWebGet = () => _web,
                Delete       = () => _listDeleted = true,
                FieldsGet    = () => new ShimSPFieldCollection
                {
                    GetFieldByInternalNameString = _ => new ShimSPField
                    {
                        SealedGet = () => true,
                        Update    = () => _fieldUpdated = true,
                        Delete    = () => _fieldDeleted = true
                    }
                },
                ViewsGet = () => new ShimSPViewCollection
                {
                    ItemGetString = _ => new ShimSPView(),
                    DeleteGuid    = _ => _viewDeleted = true
                },
                EventReceiversGet = () => new ShimSPEventReceiverDefinitionCollection().Bind(new SPEventReceiverDefinition[]
                {
                    new ShimSPEventReceiverDefinition
                    {
                        TypeGet     = () => SPEventReceiverType.AppInstalled,
                        AssemblyGet = () => DummyString,
                        ClassGet    = () => DummyString,
                        Delete      = () => _eventHandlerDeleted = true
                    }
                })
            };

            _web = new ShimSPWeb
            {
                IDGet          = () => new Guid(WebId),
                SiteGet        = () => _site.Instance,
                CurrentUserGet = () => spUser,
                AllUsersGet    = () => new ShimSPUserCollection
                {
                    GetByIDInt32 = _ => spUser
                },
                ListsGet = () => new ShimSPListCollection
                {
                    TryGetListString = item =>
                    {
                        if (item == File1)
                        {
                            return(null);
                        }

                        return(_list);
                    }
                },
                FilesGet = () => new ShimSPFileCollection
                {
                    DeleteString = _ => _webFileDeleted = true
                },
                NavigationGet = () => new ShimSPNavigation
                {
                    QuickLaunchGet = () => new ShimSPNavigationNodeCollection
                    {
                        DeleteSPNavigationNode = _ => _quickLaunchDeleted = true
                    }.Bind(new SPNavigationNode[]
                    {
                        new ShimSPNavigationNode
                        {
                            IdGet    = () => DummyInt,
                            TitleGet = () => DummyString
                        }
                    }),
                    TopNavigationBarGet = () => new ShimSPNavigationNodeCollection
                    {
                        DeleteSPNavigationNode = _ => _topNavigationBarDeleted = true
                    }.Bind(new SPNavigationNode[]
                    {
                        new ShimSPNavigationNode
                        {
                            IdGet    = () => DummyInt,
                            TitleGet = () => DummyString
                        },
                        new ShimSPNavigationNode
                        {
                            IdGet       = () => DummyInt + 1,
                            TitleGet    = () => $"{DummyString}1",
                            ChildrenGet = () => new ShimSPNavigationNodeCollection
                            {
                                DeleteSPNavigationNode = _ => { }
                            }.Bind(new SPNavigationNode[]
                            {
                                new ShimSPNavigationNode
                                {
                                    IdGet    = () => DummyInt,
                                    TitleGet = () => DummyString
                                }
                            })
                        }
                    })
                },
                GetFolderString = _ => new ShimSPFolder
                {
                    ExistsGet = () => true,
                    Delete    = () => _folderDeleted = true
                },
                FeaturesGet = () => new ShimSPFeatureCollection
                {
                    RemoveGuid = _ => _webFeatureRemoved = true
                },
                GetFileString = _ => new ShimSPFile
                {
                    ExistsGet = () => true,
                    Delete    = () => _fileDeleted = true
                }
            };

            _site = new ShimSPSite
            {
                IDGet = () => Guid.NewGuid(),
                GetCatalogSPListTemplateType = _ => new ShimSPDocumentLibrary(),
                SolutionsGet = () => new ShimSPUserSolutionCollection
                {
                    RemoveSPUserSolution = _ => _solutionDeleted = true
                }.Bind(new SPUserSolution[]
                {
                    new ShimSPUserSolution
                    {
                        NameGet = () => DummyString
                    }
                }),
                FeaturesGet = () => new ShimSPFeatureCollection
                {
                    RemoveGuid = _ => _siteFeatureRemoved = true
                }
            };

            ShimSPList.AllInstances.RootFolderGet = _ => new ShimSPFolder
            {
                FilesGet = () => new ShimSPFileCollection().Bind(new SPFile[]
                {
                    new ShimSPFile
                    {
                        NameGet = () => DummyString,
                        Delete  = () => _listFileDeleted = true
                    }
                })
            };

            ShimSPSite.ConstructorGuid                    = (_, __) => { };
            ShimSPSite.ConstructorGuidSPUserToken         = (_, __, ___) => { };
            ShimSPSite.AllInstances.OpenWeb               = _ => _web.Instance;
            ShimSPSite.AllInstances.OpenWebGuid           = (_, __) => _web;
            ShimSPSite.AllInstances.WebApplicationGet     = _ => new ShimSPWebApplication();
            ShimSPSite.AllInstances.FeatureDefinitionsGet = _ => new ShimSPFeatureDefinitionCollection().Bind(new SPFeatureDefinition[]
            {
                new ShimSPFeatureDefinition
                {
                    IdGet                 = () => new Guid(Feature1Guid),
                    DisplayNameGet        = () => DummyString,
                    CompatibilityLevelGet = () => 14,
                    ScopeGet              = () => SPFeatureScope.Site
                },
                new ShimSPFeatureDefinition
                {
                    IdGet                 = () => new Guid(Feature2Guid),
                    DisplayNameGet        = () => DummyString,
                    CompatibilityLevelGet = () => 15,
                    ScopeGet              = () => SPFeatureScope.Site
                }
            });
            ShimSPSite.AllInstances.Dispose = _ => { };

            ShimSPWeb.AllInstances.Dispose = _ => { };

            ShimSPPersistedObject.AllInstances.FarmGet = _ => new ShimSPFarm
            {
                FeatureDefinitionsGet = () => new ShimSPFeatureDefinitionCollection().Bind(new SPFeatureDefinition[]
                {
                    new ShimSPFeatureDefinition
                    {
                        IdGet                 = () => new Guid(Feature3Guid),
                        DisplayNameGet        = () => DummyString,
                        CompatibilityLevelGet = () => 14,
                        ScopeGet              = () => SPFeatureScope.Web
                    },
                    new ShimSPFeatureDefinition
                    {
                        IdGet                 = () => new Guid(Feature4Guid),
                        DisplayNameGet        = () => DummyString,
                        CompatibilityLevelGet = () => 15,
                        ScopeGet              = () => SPFeatureScope.Web
                    }
                })
            };

            ShimSPSiteDataQuery.Constructor = _ => { };

            ShimSPQuery.Constructor = _ => { };

            ShimApplications.RemoveAppFromCommunitySPListItemInt32 = (_, __) => _appRemovedFromCommunity = true;
            ShimApplications.DeleteCommunityInt32SPWeb             = (_, __) => _communityDeleted = true;

            ShimSPSecurity.RunWithElevatedPrivilegesSPSecurityCodeToRunElevated = action => action();

            ShimReportBiz.ConstructorGuid = (_, __) => { };
            ShimReportBiz.AllInstances.GetReferencingTablesEPMDataString = (_, __, ___) => new DataTable();
            ShimReportBiz.AllInstances.GetListBizGuid = (_, __) => new ShimListBiz
            {
                Delete = () => _listBizDeleted = true
            };

            ShimEPMData.ConstructorGuid = (_, __) => { };
            ShimEPMData.AllInstances.ExecuteScalarSqlConnection = (_, __) => DummyString;
            ShimEPMData.AllInstances.AddParamStringObject       = (_, __, ___) => { };

            ShimCoreFunctions.getLockConfigSettingSPWebStringBoolean = (_, __, ___) => DummyString;
            ShimCoreFunctions.getLockedWebSPWeb = _ => Guid.NewGuid();
            ShimCoreFunctions.setConfigSettingSPWebStringString = (_, __, ___) => _configSettingSet = true;
            ShimCoreFunctions.getListSettingStringSPList        = (_, __) => $"{DummyString}1";
            ShimCoreFunctions.iGetListEventTypeString           = _ => SPEventReceiverType.AppInstalled;

            ShimGridGanttSettings.AllInstances.SaveSettingsSPList = (_, __) => _gridGanttSettingsSaved = true;

            ShimPath.GetDirectoryNameString = _ => DummyString;
            ShimPath.GetExtensionString     = fileName =>
            {
                if (fileName == Folder1)
                {
                    return(DummyString);
                }

                return(string.Empty);
            };
        }