Ejemplo n.º 1
0
		[Test] public void TestFederationPropagationOfContentBaseFederationUpdates()
		{
			AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace);
			_base.WriteTopic(tn.LocalName, @"Stay1: hello
Stay2: foo
Go1: foo
Go2: foo
Change1: blag
Change2: blag
");

			FederationUpdate expected = new FederationUpdate();
			expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyUpdate);
			expected.RecordPropertyChange(tn, "_Body", FederationUpdate.PropertyChangeType.PropertyUpdate);
			expected.RecordPropertyChange(tn, "Go1", FederationUpdate.PropertyChangeType.PropertyRemove);
			expected.RecordPropertyChange(tn, "Go2", FederationUpdate.PropertyChangeType.PropertyRemove);
			expected.RecordPropertyChange(tn, "Change1", FederationUpdate.PropertyChangeType.PropertyUpdate);
			expected.RecordPropertyChange(tn, "Change2", FederationUpdate.PropertyChangeType.PropertyUpdate);
			
			StartMonitoringFederationEvents();
			_base.WriteTopic(tn.LocalName, @"Stay1: hello
Stay2: foo
Change1: new value
Change2: new value
");
			StopMonitoringFederationEvents();
			ContentBaseTests.CompareFederationUpdates(expected, _Events, false, true);
		}
Ejemplo n.º 2
0
        public static void CompareFederationUpdates(FederationUpdate expected, IList events, bool considerTopicChanges, bool considerPropertyChanges)
        {
            Assert.IsTrue(events.Count > 0, "Did not get any federation update events");

            FederationUpdate got = null;

            for (int i = 0; i < events.Count; i++)
            {
                if (i == 0)
                    got = (FederationUpdate)(events[i]);
                else
                    got.AddUpdatesFrom((FederationUpdate)(events[i]));
            }

            Assert.AreEqual(expected.FederationPropertiesChanged, got.FederationPropertiesChanged, "FederationPropertiesChanged  doesn't match");
            Assert.AreEqual(expected.NamespaceListChanged, got.NamespaceListChanged, "NamespaceListChanged doesn't match");

            if (considerTopicChanges)
            {
                // OK, look to see if/where got and expected topics are different; assert that they're the same
                foreach (AbsoluteTopicName t in expected.CreatedTopics)
                    Assert.IsTrue(got.CreatedTopics.Contains(t), "Missing created topic (" + t.FullnameWithVersion + ") from fired event(s)");
                Assert.AreEqual(expected.CreatedTopics.Count, got.CreatedTopics.Count, "Non-matching number of created topics");

                foreach (AbsoluteTopicName t in expected.UpdatedTopics)
                    Assert.IsTrue(got.UpdatedTopics.Contains(t), "Missing updated topic (" + t.FullnameWithVersion + ") from fired event(s)");
                Assert.AreEqual(expected.UpdatedTopics.Count, got.UpdatedTopics.Count, "Non-matching number of updated topics");

                foreach (AbsoluteTopicName t in expected.DeletedTopics)
                    Assert.IsTrue(got.DeletedTopics.Contains(t),"Missing deleted topic (" + t.FullnameWithVersion + ") from fired event(s)");
                Assert.AreEqual(expected.DeletedTopics.Count, got.DeletedTopics.Count,"Non-matching number of deleted topics");
            }

            if (considerPropertyChanges)
            {
                // Start by looking through the topics to be sure it's the expected set
                foreach (AbsoluteTopicName t in expected.AllTopicsWithChangedProperties)
                    Assert.IsTrue(got.AllTopicsWithChangedProperties.Contains(t), "Missing topic with property update(s) (" + t.FullnameWithVersion + ")");
                Assert.AreEqual(expected.AllTopicsWithChangedProperties.Count, got.AllTopicsWithChangedProperties.Count, "Non-matching number of topics with property updates");

                // OK, we have the right topics; let's check each one for the right set of properties and the right kind of changes
                foreach (AbsoluteTopicName t in expected.AllTopicsWithChangedProperties)
                {
                    // check added properties for the topic
                    ComparePropertyUpdatesForVerb(t, expected.AddedPropertiesForTopic(t), got.AddedPropertiesForTopic(t), "added");
                    ComparePropertyUpdatesForVerb(t, expected.ChangedPropertiesForTopic(t), got.ChangedPropertiesForTopic(t), "changed");
                    ComparePropertyUpdatesForVerb(t, expected.RemovedPropertiesForTopic(t), got.RemovedPropertiesForTopic(t), "removed");
                }
            }
        }
Ejemplo n.º 3
0
        public void TestTopicUpdateWhenAuthorChanges()
        {
            AbsoluteTopicName tn = new AbsoluteTopicName("AuthorEventTest", _base.Namespace);

            FederationUpdate expected = new FederationUpdate();
            expected.RecordPropertyChange(tn, "_LastModifiedBy", FederationUpdate.PropertyChangeType.PropertyUpdate);
            expected.RecordPropertyChange(tn, "_Body", FederationUpdate.PropertyChangeType.PropertyUpdate);
            expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyUpdate);

            WriteTestTopicAndNewVersion(_base, tn.Name, "this is the original text", "pre modern man");

            StartMonitoringEvents(_base);
            AbsoluteTopicName versioned = WriteTestTopicAndNewVersion(_base, tn.Name, "this is a change", "post modern man");
            StopMonitoringEvents(_base);

            expected.RecordPropertyChange(versioned, "_LastModifiedBy", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(versioned, "_Body", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(versioned, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(versioned, "_TopicName", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(versioned, "_TopicFullName", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(versioned, "_CreationTime", FederationUpdate.PropertyChangeType.PropertyAdd);

            CompareFederationUpdates(expected, _Events, false, true);
        }
Ejemplo n.º 4
0
        public void TestTopicUpdateEvent()
        {
            AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace);

            FederationUpdate expected = new FederationUpdate();
            expected.RecordUpdatedTopic(tn);

            _base.WriteTopic(tn.LocalName, "hello");

            StartMonitoringEvents(_base);
            _base.WriteTopic(tn.LocalName, "second should be an update");
            StopMonitoringEvents(_base);

            CompareFederationUpdates(expected, _Events, true, false);
        }
Ejemplo n.º 5
0
        public void TestTopicRenameEventWithReferenceUpdating()
        {
            AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace);
            _base.WriteTopic(tn.LocalName, "hello");

            AbsoluteTopicName tn2 = new AbsoluteTopicName("EventTest2", _base.Namespace);
            _base.WriteTopic(tn2.LocalName, "hello and reference to EventTest");
            AbsoluteTopicName tn3 = new AbsoluteTopicName("EventTest3", _base.Namespace);
            _base.WriteTopic(tn3.LocalName, "hello and reference to EventTest");

            AbsoluteTopicName newName = new AbsoluteTopicName("EventTestAfter", _base.Namespace);

            FederationUpdate expected = new FederationUpdate();
            expected.RecordDeletedTopic(tn);
            expected.RecordCreatedTopic(newName);
            expected.RecordUpdatedTopic(tn2);
            expected.RecordUpdatedTopic(tn3);

            StartMonitoringEvents(_base);
            _base.RenameTopic(tn.LocalName, newName.Name, true);
            StopMonitoringEvents(_base);

            CompareFederationUpdates(expected, _Events, true, false);
        }
Ejemplo n.º 6
0
        public void TestTopicPropertyCreateEvent()
        {
            AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace);

            FederationUpdate expected = new FederationUpdate();
            expected.RecordPropertyChange(tn, "Prop1", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "Prop2", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "Prop3", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "_Body", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "_TopicName", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "_TopicFullName", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "_LastModifiedBy", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "_CreationTime", FederationUpdate.PropertyChangeType.PropertyAdd);
            expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyAdd);

            StartMonitoringEvents(_base);
            _base.WriteTopic(tn.LocalName, @"Prop1: hello
            Prop2: goobye
            Prop3: yellow submarine
            ");
            StopMonitoringEvents(_base);

            CompareFederationUpdates(expected, _Events, false, true);
        }
Ejemplo n.º 7
0
        public void TestTopicPropertyBodyPropertyDoesNotChangeIfBodyNotChanged()
        {
            AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace);
            string body = @"Prop1: hello
            Prop2: goobye
            Prop3: yellow submarine
            ";
            _base.WriteTopic(tn.LocalName, body);

            FederationUpdate expected = new FederationUpdate();
            expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyUpdate);

            StartMonitoringEvents(_base);
            _base.WriteTopic(tn.LocalName, body);
            StopMonitoringEvents(_base);

            CompareFederationUpdates(expected, _Events, false, true);
        }
Ejemplo n.º 8
0
        public void TestTopicDeleteEventsForNamespaceDelete()
        {
            ContentBase cb = CreateStore("FlexWiki.Delete");
            AbsoluteTopicName tn1 = new AbsoluteTopicName("EventTest1", cb.Namespace);
            cb.WriteTopicAndNewVersion(tn1.LocalName, "topic 1");
            AbsoluteTopicName tn2 = new AbsoluteTopicName("EventTest2", cb.Namespace);
            cb.WriteTopicAndNewVersion(tn2.LocalName, "topic 2");
            AbsoluteTopicName tn3 = new AbsoluteTopicName("EventTest3", cb.Namespace);
            cb.WriteTopicAndNewVersion(tn3.LocalName, "topic 3");

            FederationUpdate expected = new FederationUpdate();
            expected.RecordDeletedTopic(tn1);
            expected.RecordDeletedTopic(tn2);
            expected.RecordDeletedTopic(tn3);

            StartMonitoringEvents(cb);
            cb.Delete();
            StopMonitoringEvents(cb);

            CompareFederationUpdates(expected, _Events, true, false);
        }
Ejemplo n.º 9
0
        public void TestTopicCreateEventWhenCreatingWithNewVersion()
        {
            AbsoluteTopicName tnWithoutVersion = new AbsoluteTopicName("EventTest", _base.Namespace);
            AbsoluteTopicName tnWithVersion = new AbsoluteTopicName(tnWithoutVersion.Name,  tnWithoutVersion.Namespace);
            tnWithVersion.Version = "1.2.3.4.5.6";

            FederationUpdate expected = new FederationUpdate();
            expected.RecordCreatedTopic(tnWithVersion);
            expected.RecordCreatedTopic(tnWithoutVersion);

            StartMonitoringEvents(_base);
            _base.WriteTopicAndNewVersion(tnWithVersion.LocalName, "hello");
            StopMonitoringEvents(_base);

            CompareFederationUpdates(expected, _Events, true, false);
        }
Ejemplo n.º 10
0
		[Test] public void TestFederationPropertiesChangedEventForAbout()
		{
			FederationUpdate expected = new FederationUpdate();
			expected.FederationPropertiesChanged = true;
			
			StartMonitoringFederationEvents();
			TheFederation.AboutWikiString = "Boo";
			StopMonitoringFederationEvents();
			ContentBaseTests.CompareFederationUpdates(expected, _Events, false, false);
		}