Ejemplo n.º 1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldLogTXMetaDataInQueryLog() throws Throwable
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldLogTXMetaDataInQueryLog()
        {
            // turn on query logging
            _databaseBuilder.setConfig(logs_directory, _logsDirectory.Path);
            _databaseBuilder.setConfig(log_queries, Settings.TRUE);
            _db = new EmbeddedInteraction(_databaseBuilder, Collections.emptyMap());
            GraphDatabaseFacade graph = _db.LocalGraph;

            _db.LocalUserManager.setUserPassword("neo4j", password("123"), false);

            EnterpriseLoginContext subject = _db.login("neo4j", "123");

            _db.executeQuery(subject, "UNWIND range(0, 10) AS i CREATE (:Foo {p: i})", Collections.emptyMap(), ResourceIterator.close);

            // Set meta data and execute query in transaction
            using (InternalTransaction tx = _db.beginLocalTransactionAsUser(subject, KernelTransaction.Type.@explicit))
            {
                graph.Execute("CALL dbms.setTXMetaData( { User: '******' } )", Collections.emptyMap());
                graph.Execute("CALL dbms.procedures() YIELD name RETURN name", Collections.emptyMap()).close();
                graph.Execute("MATCH (n) RETURN n", Collections.emptyMap()).close();
                graph.Execute(QUERY, Collections.emptyMap());
                tx.Success();
            }

            // Ensure that old meta data is not retained
            using (InternalTransaction tx = _db.beginLocalTransactionAsUser(subject, KernelTransaction.Type.@explicit))
            {
                graph.Execute("CALL dbms.setTXMetaData( { Location: 'Sweden' } )", Collections.emptyMap());
                graph.Execute("MATCH ()-[r]-() RETURN count(r)", Collections.emptyMap()).close();
                tx.Success();
            }

            _db.tearDown();

            // THEN
            IList <string> logLines = ReadAllLines(_logFilename);

            assertThat(logLines, hasSize(7));
            assertThat(logLines[0], not(containsString("User: '******'")));
            // we don't care if setTXMetaData contains the meta data
            //assertThat( logLines.get( 1 ), containsString( "User: Johan" ) );
            assertThat(logLines[2], containsString("User: '******'"));
            assertThat(logLines[3], containsString("User: '******'"));
            assertThat(logLines[4], containsString("User: '******'"));

            // we want to make sure that the new transaction does not carry old meta data
            assertThat(logLines[5], not(containsString("User: '******'")));
            assertThat(logLines[6], containsString("Location: 'Sweden'"));
        }
Ejemplo n.º 2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldLogCustomUserName() throws Throwable
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldLogCustomUserName()
        {
            // turn on query logging
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.util.Map<String, String> config = stringMap(logs_directory.name(), logsDirectory.getPath(), log_queries.name(), org.neo4j.kernel.configuration.Settings.TRUE);
            IDictionary <string, string> config = stringMap(logs_directory.name(), _logsDirectory.Path, log_queries.name(), Settings.TRUE);

            _db = new EmbeddedInteraction(_databaseBuilder, config);

            // create users
            _db.LocalUserManager.newUser("mats", password("neo4j"), false);
            _db.LocalUserManager.newUser("andres", password("neo4j"), false);
            _db.LocalUserManager.addRoleToUser("architect", "mats");
            _db.LocalUserManager.addRoleToUser("reader", "andres");

            EnterpriseLoginContext mats = _db.login("mats", "neo4j");

            // run query
            _db.executeQuery(mats, "UNWIND range(0, 10) AS i CREATE (:Foo {p: i})", Collections.emptyMap(), ResourceIterator.close);
            _db.executeQuery(mats, "CREATE (:Label)", Collections.emptyMap(), ResourceIterator.close);

            // switch user, run query
            EnterpriseLoginContext andres = _db.login("andres", "neo4j");

            _db.executeQuery(andres, "MATCH (n:Label) RETURN n", Collections.emptyMap(), ResourceIterator.close);

            _db.tearDown();

            // THEN
            IList <string> logLines = ReadAllLines(_logFilename);

            assertThat(logLines, hasSize(3));
            assertThat(logLines[0], containsString("mats"));
            assertThat(logLines[1], containsString("mats"));
            assertThat(logLines[2], containsString("andres"));
        }