コード例 #1
0
        public void TestSyncDelta()
        {
            ConnectorObjectBuilder bld = new ConnectorObjectBuilder();

            bld.SetUid("foo");
            bld.SetName("name");
            SyncDeltaBuilder builder = new SyncDeltaBuilder();

            builder.PreviousUid = (new Uid("mypreviousuid"));
            builder.Uid         = (new Uid("myuid"));
            builder.DeltaType   = (SyncDeltaType.CREATE_OR_UPDATE);
            builder.Token       = (new SyncToken("mytoken"));
            builder.Object      = (bld.Build());
            SyncDelta v1 = builder.Build();
            SyncDelta v2 = (SyncDelta)CloneObject(v1);

            Assert.AreEqual(new Uid("mypreviousuid"), v2.PreviousUid);
            Assert.AreEqual(new Uid("foo"), v2.Uid);
            Assert.AreEqual(new SyncToken("mytoken"), v2.Token);
            Assert.AreEqual(SyncDeltaType.CREATE_OR_UPDATE, v2.DeltaType);
            Assert.AreEqual(v1, v2);

            builder             = new SyncDeltaBuilder();
            builder.DeltaType   = SyncDeltaType.DELETE;
            builder.Token       = new SyncToken("mytoken");
            builder.ObjectClass = ObjectClass.ACCOUNT;
            builder.Uid         = new Uid("foo");
            v1 = builder.Build();
            v2 = (SyncDelta)CloneObject(v1);
            Assert.AreEqual(ObjectClass.ACCOUNT, v2.ObjectClass);
            Assert.AreEqual(new Uid("foo"), v2.Uid);
            Assert.AreEqual(new SyncToken("mytoken"), v2.Token);
            Assert.AreEqual(SyncDeltaType.DELETE, v2.DeltaType);
            Assert.AreEqual(v1, v2);
        }
コード例 #2
0
        public void Sync(ObjectClass objClass, SyncToken token,
                         SyncResultsHandler handler,
                         OperationOptions options)
        {
            int remaining = _config.numResults;

            for (int i = 0; i < _config.numResults; i++)
            {
                ConnectorObjectBuilder obuilder =
                    new ConnectorObjectBuilder();
                obuilder.SetUid(i.ToString());
                obuilder.SetName(i.ToString());
                obuilder.ObjectClass = (objClass);

                SyncDeltaBuilder builder =
                    new SyncDeltaBuilder();
                builder.Object    = (obuilder.Build());
                builder.DeltaType = (SyncDeltaType.CREATE_OR_UPDATE);
                builder.Token     = (new SyncToken("mytoken"));
                SyncDelta rv = builder.Build();
                if (handler.Handle(rv))
                {
                    remaining--;
                }
                else
                {
                    break;;
                }
            }
            if (handler is SyncTokenResultsHandler)
            {
                ((SyncTokenResultsHandler)handler).HandleResult(new SyncToken(remaining));
            }
        }
コード例 #3
0
        public void TestSyncGroup()
        {
            var result = new List <SyncDelta>();

            GetFacade().Sync(ObjectClass.GROUP, new SyncToken(0), new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(3, result.Count);
            SyncDelta sdelta = result[0];

            result.RemoveAt(0);
            Assert.AreEqual(SyncDeltaType.CREATE_OR_UPDATE, sdelta.DeltaType);
            Assert.AreEqual(4, sdelta.Object.GetAttributes().Count);
        }
コード例 #4
0
        public void Sync(ObjectClass objClass, SyncToken token,
                         SyncResultsHandler handler,
                         OperationOptions options)
        {
            for (int i = 0; i < _config.numResults; i++)
            {
                ConnectorObjectBuilder obuilder =
                    new ConnectorObjectBuilder();
                obuilder.SetUid(i.ToString());
                obuilder.SetName(i.ToString());
                obuilder.ObjectClass = (objClass);

                SyncDeltaBuilder builder =
                    new SyncDeltaBuilder();
                builder.Object    = (obuilder.Build());
                builder.DeltaType = (SyncDeltaType.CREATE_OR_UPDATE);
                builder.Token     = (new SyncToken("mytoken"));
                SyncDelta rv = builder.Build();
                if (!handler(rv))
                {
                    break;
                }
            }
        }
コード例 #5
0
        public void TestSyncDelta()
        {
            ConnectorObjectBuilder objbuilder =
                new ConnectorObjectBuilder();

            objbuilder.SetName("myname");
            objbuilder.SetUid("myuid");
            objbuilder.AddAttribute(CreateTestAttribute());
            ConnectorObject obj = objbuilder.Build();

            SyncDeltaBuilder builder =
                new SyncDeltaBuilder();

            builder.DeltaType = (SyncDeltaType.DELETE);
            builder.Token     = (new SyncToken("mytoken"));
            builder.Uid       = (new Uid("myuid"));
            builder.Object    = (obj);
            SyncDelta v1 = builder.Build();
            SyncDelta v2 = CreateTestNormalizer().NormalizeSyncDelta(v1);

            builder =
                new SyncDeltaBuilder();
            builder.DeltaType = (SyncDeltaType.DELETE);
            builder.Token     = (new SyncToken("mytoken"));
            builder.Uid       = (new Uid("myuid"));
            objbuilder        =
                new ConnectorObjectBuilder();
            objbuilder.SetName("myname");
            objbuilder.SetUid("myuid");
            objbuilder.AddAttribute(CreateNormalizedTestAttribute());
            builder.Object = objbuilder.Build();
            SyncDelta expected = builder.Build();

            Assert.AreEqual(expected, v2);
            Assert.IsFalse(expected.Equals(v1));
        }
コード例 #6
0
        public void TestSyncAccount(ObjectClass objectClass)
        {
            var       result    = new List <SyncDelta>();
            SyncToken lastToken = GetFacade().Sync(objectClass, new SyncToken(0), new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);

            Assert.AreEqual(1, lastToken.Value);
            Assert.AreEqual(1, result.Count);
            SyncDelta sdelta = result[0];

            result.RemoveAt(0);
            Assert.AreEqual(SyncDeltaType.CREATE, sdelta.DeltaType);
            Assert.AreEqual(44, sdelta.Object.GetAttributes().Count);

            lastToken = GetFacade().Sync(objectClass, lastToken, new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(2, lastToken.Value);
            Assert.AreEqual(1, result.Count);
            sdelta = result[0];
            result.RemoveAt(0);
            Assert.AreEqual(SyncDeltaType.UPDATE, sdelta.DeltaType);
            Assert.AreEqual(44, sdelta.Object.GetAttributes().Count);

            lastToken = GetFacade().Sync(objectClass, lastToken, new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(3, lastToken.Value);
            Assert.AreEqual(1, result.Count);
            sdelta = result[0];
            result.RemoveAt(0);
            Assert.AreEqual(SyncDeltaType.CREATE_OR_UPDATE, sdelta.DeltaType);
            Assert.AreEqual(44, sdelta.Object.GetAttributes().Count);

            lastToken = GetFacade().Sync(objectClass, lastToken, new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(4, lastToken.Value);
            Assert.AreEqual(1, result.Count);
            sdelta = result[0];
            result.RemoveAt(0);
            Assert.AreEqual(SyncDeltaType.UPDATE, sdelta.DeltaType);
            Assert.AreEqual(44, sdelta.Object.GetAttributes().Count);
            Assert.AreEqual("001", sdelta.PreviousUid.GetUidValue());

            lastToken = GetFacade().Sync(objectClass, lastToken, new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(5, lastToken.Value);
            Assert.AreEqual(1, result.Count);
            sdelta = result[0];
            result.RemoveAt(0);
            Assert.AreEqual(SyncDeltaType.DELETE, sdelta.DeltaType);

            lastToken = GetFacade().Sync(objectClass, lastToken, new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(10, lastToken.Value);
            Assert.IsEmpty(result);

            lastToken = GetFacade().Sync(objectClass, lastToken, new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(17, lastToken.Value);
            Assert.AreEqual(4, result.Count);
            result.Clear();

            lastToken = GetFacade().Sync(ObjectClass.GROUP, lastToken, new SyncResultsHandler()
            {
                Handle = delta =>
                {
                    result.Add(delta);
                    return(true);
                }
            }, null);
            Assert.AreEqual(16, lastToken.Value);
            Assert.AreEqual(3, result.Count);
        }
コード例 #7
0
        public void TestSyncWithManyResults()
        {
            ConnectorInfoManager manager =
                GetConnectorInfoManager();
            ConnectorInfo info =
                FindConnectorInfo(manager,
                                  "1.0.0.0",
                                  "org.identityconnectors.testconnector.TstConnector");

            Assert.IsNotNull(info);
            APIConfiguration api = info.CreateDefaultAPIConfiguration();

            ConfigurationProperties props    = api.ConfigurationProperties;
            ConfigurationProperty   property = props.GetProperty("numResults");

            //1000 is several times the remote size between pauses
            property.Value = (1000);

            ConnectorFacadeFactory facf   = ConnectorFacadeFactory.GetInstance();
            ConnectorFacade        facade = facf.NewInstance(api);

            SyncToken latest = facade.GetLatestSyncToken(ObjectClass.ACCOUNT);

            Assert.AreEqual("mylatest", latest.Value);
            IList <SyncDelta> results = new List <SyncDelta>();

            facade.Sync(ObjectClass.ACCOUNT, null, new SyncResultsHandler()
            {
                Handle = obj =>
                {
                    results.Add(obj);
                    return(true);
                }
            }, null);

            Assert.AreEqual(1000, results.Count);
            for (int i = 0; i < results.Count; i++)
            {
                SyncDelta obj = results[i];
                Assert.AreEqual(i.ToString(),
                                obj.Uid.GetUidValue());
            }

            results.Clear();

            facade.Sync(ObjectClass.ACCOUNT,
                        null, new SyncResultsHandler()
            {
                Handle = obj =>
                {
                    if (results.Count < 500)
                    {
                        results.Add(obj);
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
                        , null);

            Assert.AreEqual(500, results.Count);
            for (int i = 0; i < results.Count; i++)
            {
                SyncDelta obj = results[i];
                Assert.AreEqual(i.ToString(),
                                obj.Uid.GetUidValue());
            }
        }
コード例 #8
0
 /// <summary>
 /// Process/handle the SyncDelta result
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public Object Process(SyncDelta result)
 {
     return(_handler.Handle(result));
 }
コード例 #9
0
 public bool Handle(SyncDelta obj)
 {
     return(_target.Handle(obj));
 }