public void Should_setup_permissions()
        {
            var testQueueName = "MsmqQueueCreatorTests.permissions";

            var creator  = new QueueCreator(true);
            var bindings = new QueueBindings();

            DeleteQueueIfPresent(testQueueName);

            bindings.BindReceiving(testQueueName);

            // use the network service account since that one won't be in the local admin group
            creator.CreateQueueIfNecessary(bindings, NetworkServiceAccountName);

            var createdQueue = GetQueue(testQueueName);

            MessageQueueAccessRights?accountAccessRights;

            Assert.True(createdQueue.TryGetPermissions(NetworkServiceAccountName, out accountAccessRights));
            Assert.True(accountAccessRights.HasValue, "User should have access rights");
            Assert.AreEqual(MessageQueueAccessRights.WriteMessage | MessageQueueAccessRights.ReceiveMessage, accountAccessRights, "User should have write/read access");

            MessageQueueAccessRights?localAdminAccessRights;

            Assert.True(createdQueue.TryGetPermissions(LocalAdministratorsGroupName, out localAdminAccessRights));
            Assert.True(localAdminAccessRights.HasValue, "User should have access rights");
            Assert.AreEqual(MessageQueueAccessRights.FullControl, localAdminAccessRights, "LocalAdmins should have full control");
        }
Esempio n. 2
0
 public SearchByPattern(string sourceFilePath, ISearcher searcher)
 {
     this.sourceFilePath = sourceFilePath;
     this.searcher       = searcher;
     fileQueueCreator    = new SearchbleQueueCreator(sourceFilePath);
     filesQueue          = fileQueueCreator.GetFilledQueueOfFilesPath();
 }
        public void Should_not_add_everyone_and_anonymous_to_already_existing_queues()
        {
            var testQueueName = "MsmqQueueCreatorTests.NoChangesToExisting";

            DeleteQueueIfPresent(testQueueName);

            var path = MsmqAddress.Parse(testQueueName).PathWithoutPrefix;

            using (var existingQueue = MessageQueue.Create(path))
            {
                existingQueue.SetPermissions(LocalEveryoneGroupName, MessageQueueAccessRights.GenericWrite, AccessControlEntryType.Revoke);
                existingQueue.SetPermissions(LocalAnonymousLogonName, MessageQueueAccessRights.WriteMessage, AccessControlEntryType.Revoke);
            }

            var creator  = new QueueCreator(true);
            var bindings = new QueueBindings();

            bindings.BindReceiving(testQueueName);

            creator.CreateQueueIfNecessary(bindings, WindowsIdentity.GetCurrent().Name);


            var queue = GetQueue(testQueueName);

            MessageQueueAccessRights?nullBecauseRevoked;

            Assert.False(queue.TryGetPermissions(LocalEveryoneGroupName, out nullBecauseRevoked));
            Assert.False(queue.TryGetPermissions(LocalAnonymousLogonName, out nullBecauseRevoked));
        }
        static Task CreateQueueIfNotExists(QueueAddressTranslator addressTranslator)
        {
            var queueCreator  = new QueueCreator(sqlConnectionFactory, addressTranslator);
            var queueBindings = new QueueBindings();

            queueBindings.BindReceiving(QueueTableName);

            return(queueCreator.CreateQueueIfNecessary(queueBindings, ""));
        }
        public void Should_blow_up_if_name_is_null()
        {
            var creator  = new QueueCreator(true);
            var bindings = new QueueBindings();

            bindings.BindReceiving(null);

            Assert.Throws <ArgumentNullException>(() => creator.CreateQueueIfNecessary(bindings, WindowsIdentity.GetCurrent().Name));
        }
        static Task CreateOutputQueueIfNecessary(QueueAddressParser addressParser)
        {
            var queueCreator  = new QueueCreator(sqlConnectionFactory, addressParser);
            var queueBindings = new QueueBindings();

            queueBindings.BindReceiving(validAddress);

            return(queueCreator.CreateQueueIfNecessary(queueBindings, ""));
        }
Esempio n. 7
0
        static Task CreateOutputQueueIfNecessary(QueueAddressTranslator addressParser, SqlConnectionFactory sqlConnectionFactory)
        {
            var queueCreator  = new QueueCreator(sqlConnectionFactory, addressParser, new CanonicalQueueAddress("Delayed", "dbo", "nservicebus"));
            var queueBindings = new QueueBindings();

            queueBindings.BindReceiving(validAddress);

            return(queueCreator.CreateQueueIfNecessary(queueBindings, ""));
        }
        static Task CreateQueueIfNotExists(QueueAddressTranslator addressTranslator, SqlConnectionFactory sqlConnectionFactory)
        {
            var queueCreator  = new QueueCreator(sqlConnectionFactory, addressTranslator, new CanonicalQueueAddress("Delayed", "dbo", "nservicebus"));
            var queueBindings = new QueueBindings();

            queueBindings.BindReceiving(QueueTableName);

            return(queueCreator.CreateQueueIfNecessary(queueBindings, ""));
        }
Esempio n. 9
0
        public KafkaTransportInfrastructure(SettingsHolder settings, string connectionString)
        {
            this.settings         = settings;
            this.connectionString = connectionString;
            serializer            = BuildSerializer(settings);
            this.queueCreator     = new QueueCreator(settings);

            messagePump         = new MessagePump(settings, connectionString);
            messageDispatcher   = new MessageDispatcher(new Transports.Kafka.Connection.ProducerFactory(connectionString));
            subscriptionManager = new SubscriptionManager(messagePump, queueCreator);
        }
        public void Should_not_create_remote_queues()
        {
            var creator         = new QueueCreator(true);
            var bindings        = new QueueBindings();
            var remoteQueueName = "MsmqQueueCreatorTests.remote";

            bindings.BindSending($"{remoteQueueName}@some-machine");

            creator.CreateQueueIfNecessary(bindings, WindowsIdentity.GetCurrent().Name);

            Assert.False(QueueExists(remoteQueueName));
        }
        static async Task ResetQueue(QueueAddressTranslator addressTranslator, SqlConnectionFactory sqlConnectionFactory, CancellationToken cancellationToken = default)
        {
            var queueCreator = new QueueCreator(sqlConnectionFactory, addressTranslator);

            using (var connection = await sqlConnectionFactory.OpenNewConnection(cancellationToken).ConfigureAwait(false))
            {
                using (var comm = connection.CreateCommand())
                {
                    comm.CommandText = $"IF OBJECT_ID('{QueueTableName}', 'U') IS NOT NULL DROP TABLE {QueueTableName}";
                    comm.ExecuteNonQuery();
                }
            }
            await queueCreator.CreateQueueIfNecessary(new[] { QueueTableName }, new CanonicalQueueAddress("Delayed", "dbo", "nservicebus"), cancellationToken).ConfigureAwait(false);
        }
        public void Should_blow_up_for_invalid_accounts()
        {
            var testQueueName = "MsmqQueueCreatorTests.badidentity";

            DeleteQueueIfPresent(testQueueName);

            var creator  = new QueueCreator(true);
            var bindings = new QueueBindings();

            bindings.BindReceiving(testQueueName);

            var ex = Assert.Throws <InvalidOperationException>(() => creator.CreateQueueIfNecessary(bindings, "invalidaccount"));

            StringAssert.Contains("invalidaccount", ex.Message);
        }
        public void Should_allow_queue_names_above_the_limit_for_set_permission()
        {
            var testQueueName = $"MsmqQueueCreatorTests.tolong.{Guid.NewGuid().ToString().Replace("-", "")}";

            var maxQueueNameForSetPermissionToWork = 102 - Environment.MachineName.Length;

            testQueueName = $"{testQueueName}{new string('a', maxQueueNameForSetPermissionToWork - testQueueName.Length + 1)}";

            DeleteQueueIfPresent(testQueueName);

            var creator  = new QueueCreator(true);
            var bindings = new QueueBindings();

            bindings.BindReceiving(testQueueName);

            Assert.DoesNotThrow(() => creator.CreateQueueIfNecessary(bindings, WindowsIdentity.GetCurrent().Name));
        }
        public void Should_make_queues_non_transactional_if_requested()
        {
            var testQueueName = "MsmqQueueCreatorTests.txreceiver";

            DeleteQueueIfPresent(testQueueName);

            var creator  = new QueueCreator(false);
            var bindings = new QueueBindings();

            bindings.BindReceiving(testQueueName);

            creator.CreateQueueIfNecessary(bindings, WindowsIdentity.GetCurrent().Name);

            var queue = GetQueue(testQueueName);

            Assert.False(queue.Transactional);
        }
Esempio n. 15
0
        static async Task ResetQueue(QueueAddressTranslator addressTranslator)
        {
            var queueCreator  = new QueueCreator(sqlConnectionFactory, addressTranslator);
            var queueBindings = new QueueBindings();

            queueBindings.BindReceiving(QueueTableName);

            using (var connection = await sqlConnectionFactory.OpenNewConnection().ConfigureAwait(false))
            {
                using (var comm = connection.CreateCommand())
                {
                    comm.CommandText = $"IF OBJECT_ID('{QueueTableName}', 'U') IS NOT NULL DROP TABLE {QueueTableName}";
                    comm.ExecuteNonQuery();
                }
            }
            await queueCreator.CreateQueueIfNecessary(queueBindings, "").ConfigureAwait(false);
        }
        public void Should_create_all_queues()
        {
            var creator  = new QueueCreator(true);
            var bindings = new QueueBindings();

            DeleteQueueIfPresent("MsmqQueueCreatorTests.receiver");
            DeleteQueueIfPresent("MsmqQueueCreatorTests.endpoint1");
            DeleteQueueIfPresent("MsmqQueueCreatorTests.endpoint2");

            bindings.BindReceiving("MsmqQueueCreatorTests.receiver");
            bindings.BindSending("MsmqQueueCreatorTests.target1");
            bindings.BindSending("MsmqQueueCreatorTests.target2");

            creator.CreateQueueIfNecessary(bindings, WindowsIdentity.GetCurrent().Name);

            Assert.True(QueueExists("MsmqQueueCreatorTests.receiver"));
            Assert.True(QueueExists("MsmqQueueCreatorTests.target1"));
            Assert.True(QueueExists("MsmqQueueCreatorTests.target2"));
        }
Esempio n. 17
0
        public void TestQueueCreator()
        {
            AbilityChecker abilityChecker = new AbilityChecker(new StableDice());

            List <Player> party = new List <Player>
            {
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10)
            };

            List <Player> opponents = new List <Player>
            {
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10),
                CreatePlayer(10)
            };

            List <Player> queue = QueueCreator.MakeQueue(party, opponents, abilityChecker);


            Assert.AreEqual(party.Count + opponents.Count, queue.Count);
            for (int i = 0; i < party.Count; i++)
            {
                Assert.AreEqual(party[i], queue[i]);
            }

            for (int i = 0; i < opponents.Count; i++)
            {
                Assert.AreEqual(opponents[i], queue[i + party.Count]);
            }
        }
        static Task CreateOutputQueueIfNecessary(QueueAddressTranslator addressParser, SqlConnectionFactory sqlConnectionFactory, CancellationToken cancellationToken = default)
        {
            var queueCreator = new QueueCreator(sqlConnectionFactory, addressParser);

            return(queueCreator.CreateQueueIfNecessary(new[] { ValidAddress }, new CanonicalQueueAddress("Delayed", "dbo", "nservicebus"), cancellationToken));
        }
 public SubscriptionManager(MessagePump messagePump, QueueCreator queueCreator)
 {
     this.messagePump  = messagePump;
     this.queueCreator = queueCreator;
 }
Esempio n. 20
0
        static Task CreateQueueIfNotExists(QueueAddressTranslator addressTranslator, SqlConnectionFactory sqlConnectionFactory, CancellationToken cancellationToken = default)
        {
            var queueCreator = new QueueCreator(sqlConnectionFactory, addressTranslator, false);

            return(queueCreator.CreateQueueIfNecessary(new[] { QueueTableName }, new CanonicalQueueAddress("Delayed", "dbo", "nservicebus"), cancellationToken));
        }