Ejemplo n.º 1
0
        public void SecurityFeaturesMustHaveDescription()
        {
            AssertCustom.IgnoreOnBuildServer();

            var baseFeatureClass = typeof(NeptuneBaseFeature);
            var types            = AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => baseFeatureClass.IsAssignableFrom(p) && p.Name != baseFeatureClass.Name && !p.IsAbstract);

            var listOfSecurityFeaturesWithoutDescription = new List <string>();

            foreach (var type in types)
            {
                Attribute[] attributes = Attribute.GetCustomAttributes(type);
                if (!attributes.Any(x => x is SecurityFeatureDescription))
                {
                    listOfSecurityFeaturesWithoutDescription.Add(type.FullName);
                }
                else if (attributes.Where(x => x is SecurityFeatureDescription).Any(attr => ((SecurityFeatureDescription)attr).DescriptionMessage == ""))
                {
                    listOfSecurityFeaturesWithoutDescription.Add(type.FullName); //Also flag anything where the description is blank
                }
            }

            if (listOfSecurityFeaturesWithoutDescription.Count > 0)
            {
                Assert.Fail(Environment.NewLine + Environment.NewLine + String.Join(Environment.NewLine, listOfSecurityFeaturesWithoutDescription));
            }
        }
Ejemplo n.º 2
0
        public void CanSerializeAFeatureCollectionAndEnsureItIsValidTest()
        {
            AssertCustom.IgnoreOnBuildServer();

            var fc   = GetTestFeatureCollection();
            var json = JsonConvert.SerializeObject(fc, Formatting.Indented,
                                                   new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            Assert.IsNotNull(json);
            Trace.WriteLine("You can download spatial maps via http://www.naturalearthdata.com/" + "\r\n" + "\r\n");
            Trace.WriteLine(json);

            var buffer = Encoding.UTF8.GetBytes(json);
            var webReq = (HttpWebRequest)WebRequest.Create("http://geojsonlint.com/validate");

            webReq.Method        = "POST";
            webReq.ContentLength = buffer.Length;
            webReq.ContentType   = "application/x-www-form-urlencoded";

            var reqStream = webReq.GetRequestStream();

            reqStream.Write(buffer, 0, buffer.Length);
            reqStream.Close();

            var webRes    = webReq.GetResponse();
            var resStream = webRes.GetResponseStream();
            // ReSharper disable once AssignNullToNotNullAttribute
            var resReader = new StreamReader(resStream);
            var resObj    = JsonConvert.DeserializeObject <GeoJSONLintResult>(resReader.ReadToEnd());

            Assert.AreEqual(resObj.status, "ok");
        }
        public void CanProperlyCreateCommandLineOptionsForOgr2OgrUsingGeoJSON()
        {
            AssertCustom.IgnoreOnBuildServer();

            // Arrange
            // -------

            var          gdalDataDirectoryInfo = new DirectoryInfo(@"C:\Program Files\GDAL\gdal-data");
            const string sourceLayerName       = "MySourceLayerName";
            var          inputGdbFile          = new FileInfo(@"C:\temp\MyZippedGdbFile.gdb.zip");

            // Act
            // ---
            var actualCommandLineArguments = Ogr2OgrCommandLineRunner.BuildCommandLineArgumentsForFileGdbToGeoJson(
                inputGdbFile,
                gdalDataDirectoryInfo,
                sourceLayerName, CoordinateSystemId, true);

            // Assert
            // ------

            // Expecting a command line something like this:
            //"C:\Program Files\GDAL\ogr2ogr.exe" --config GDAL_DATA "C:\\Program Files\\GDAL\\gdal-data" -t_srs EPSG:4326 -explodecollections -f GeoJSON /dev/stdout "C:\\svn\\sitkatech\\trunk\\Corral\\Source\\Neptune.Web\\Models\\GdalOgr\\SampleFileGeodatabase.gdb.zip"

            var expectedCommandLineArguments = new[] { "--config", "GDAL_DATA", gdalDataDirectoryInfo.FullName, "-t_srs", Ogr2OgrCommandLineRunner.GetMapProjection(CoordinateSystemId), "-explodecollections", "-f", "GeoJSON", "/dev/stdout", inputGdbFile.FullName, string.Format("\"{0}\"", sourceLayerName) };

            Assert.That(actualCommandLineArguments, Is.EquivalentTo(expectedCommandLineArguments), "Should produce expected arguments");

            var expectedCommandLineArgumentsEncodedString = string.Join(" ", expectedCommandLineArguments.Select(ProcessUtility.EncodeArgumentForCommandLine).ToList());
            var actualCommandLineArgumentsEncodedString   = string.Join(" ", actualCommandLineArguments.Select(ProcessUtility.EncodeArgumentForCommandLine).ToList());

            Assert.That(actualCommandLineArgumentsEncodedString, Is.EqualTo(expectedCommandLineArgumentsEncodedString), "Should produce the expected command line argument string in the correct order");
        }
Ejemplo n.º 4
0
        public void BuildDhtmlxGridHeaderTest()
        {
            AssertCustom.IgnoreOnBuildServer();

            var gridSpec = new TestGridSpec();
            var result   = DhtmlxGridHtmlHelpers.BuildDhtmlxGridHeader(gridSpec, GridName, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithFooterUrl, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithoutFooterUrl);

            Approvals.Verify(result);
        }
Ejemplo n.º 5
0
        public void CreateFilteredExcelDownloadIconHtmlTest()
        {
            AssertCustom.IgnoreOnBuildServer();

            const string gridName = "testGridName";
            var          result   = DhtmlxGridHtmlHelpers.CreateFilteredExcelDownloadIconHtml(gridName, true, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithFooterUrl, NeptuneDhtmlxGridHtmlHelpers.ExcelDownloadWithoutFooterUrl);

            Approvals.Verify(result);
        }
Ejemplo n.º 6
0
        public void TestPyqgisLauncher()
        {
            AssertCustom.IgnoreOnBuildServer();

            var processUtilityResult = QgisRunner.ExecutePyqgisScript(NeptuneWebConfiguration.PathToPyqgisTestScript,
                                                                      NeptuneWebConfiguration.PyqgisWorkingDirectory);

            Assert.That(processUtilityResult.ReturnCode == 0);
        }
Ejemplo n.º 7
0
        public void SimpleTableColumns()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child, db.Child.Name, db.Child.ParentId);

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Name, c.ParentId\r\nFROM Child c", result);
        }
Ejemplo n.º 8
0
        public void SimpleTable()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Parent);

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT p.Id, p.Name\r\nFROM Parent p", result);
        }
Ejemplo n.º 9
0
        public void SimpleTableColumnExpression()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child, db.Child.Name, db.Child.ParentId).AddColumn("now", "GetDate()");

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Name, c.ParentId, GetDate() AS 'now'\r\nFROM Child c", result);
        }
Ejemplo n.º 10
0
        public void NotUsingAllowAnonymousAttribute()
        {
            AssertCustom.IgnoreOnBuildServer();
            var allControllerActionMethods = NeptuneBaseController.AllControllerActionMethods;
            var usingAllowAnonymous        = allControllerActionMethods.Where(m => m.GetCustomAttributes().Any(a => a.GetType() == _typeOfAllowAnonymousAttribute || a.GetType().IsSubclassOf(_typeOfAllowAnonymousAttribute))).ToList();

            var x = usingAllowAnonymous.Select(MethodName).ToList();

            Assert.That(x, Is.Empty, string.Format("Found some uses of \"{0}\", should be using types of \"{1}\" only.", _typeOfAllowAnonymousAttribute.FullName, _typeOfNeptuneBaseFeature.FullName));
        }
Ejemplo n.º 11
0
        public void TestProcessing()
        {
            AssertCustom.IgnoreOnBuildServer();

            var processUtilityResult = QgisRunner.ExecutePyqgisScript(
                $"{NeptuneWebConfiguration.PyqgisWorkingDirectory}TestPyqgisProcessing.py",
                @"C:\Windows\System32\");

            Assert.That(processUtilityResult.ReturnCode == 0);
        }
Ejemplo n.º 12
0
        public void SimpleTableColumnCase()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();

            var q = new Query(db.Child, db.Child.Name, db.Child.ParentId).AddColumn("IsParentId1", "CASE WHEN", db.Child.ParentId, "= 1 THEN", db.Child.ParentId, "ELSE 0 END");

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Name, c.ParentId, CASE WHEN c.ParentId = 1 THEN c.ParentId ELSE 0 END AS 'IsParentId1'\r\nFROM Child c", result);
        }
Ejemplo n.º 13
0
        public void WhereExpression()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Parent)
                     .Where(db.Parent.Name, "LIKE 'a%'");

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT p.Id, p.Name\r\nFROM Parent p\r\nWHERE p.Name LIKE 'a%'", result);
        }
Ejemplo n.º 14
0
        public void Union()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Parent)
                     .Union(new Query(db.Parent));

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT p.Id, p.Name\r\nFROM Parent p\r\nUNION\r\nSELECT p.Id, p.Name\r\nFROM Parent p", result);
        }
Ejemplo n.º 15
0
        public void ParentFieldWithChild()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child)
                     .LeftJoin(db.Parent, db.Parent.Name);

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, p.Name AS 'ParentName'\r\nFROM Child c\r\n" +
                                  "LEFT JOIN Parent p ON p.Id = c.ParentId", result);
        }
Ejemplo n.º 16
0
        public void CanSerializeAFeatureCollectionTest()
        {
            AssertCustom.IgnoreOnBuildServer();

            var fc   = GetTestFeatureCollection();
            var json = JsonConvert.SerializeObject(fc, Formatting.Indented,
                                                   new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            Approvals.Verify(json);
        }
Ejemplo n.º 17
0
        public void EachControllerActionShouldHaveOneFeature()
        {
            AssertCustom.IgnoreOnBuildServer();
            var allControllerActionMethods = NeptuneBaseController.AllControllerActionMethods;

            var info = allControllerActionMethods.Select(method => new { Name = MethodName(method), FeatureCount = NumberOfNeptuneFeatureAttributesOnMethod(method) }).ToList();

            // Remove exceptions
            info = info.Where(x => x.Name != "JasmineController.Run").ToList();

            Assert.That(info.Where(x => x.FeatureCount == 0).ToList(), Is.Empty, string.Format("All should have at least one {0}", _typeOfNeptuneBaseFeature.Name));
            Assert.That(info.Where(x => x.FeatureCount > 1).ToList(), Is.Empty, string.Format("Should have no more than one{0}", _typeOfNeptuneBaseFeature.Name));
        }
Ejemplo n.º 18
0
        public void JoinColumnsParentNone_PrefixTableAliasAlways()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child, QueryColumnAliasStrategy.PrefixTableAliasAlways, new None())
                     .InnerJoin(db.Parent);

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT p.Id AS 'p_Id', p.Name AS 'p_Name'\r\n"
                                  + "FROM Child c\r\n" +
                                  "INNER JOIN Parent p ON p.Id = c.ParentId", result);
        }
Ejemplo n.º 19
0
        public void JoinColumnsParentNone()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child, new None())
                     .InnerJoin(db.Parent);

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT p.Id, p.Name\r\n"
                                  + "FROM Child c\r\n" +
                                  "INNER JOIN Parent p ON p.Id = c.ParentId", result);
        }
Ejemplo n.º 20
0
        public void JoinWithAlias()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child, QueryColumnAliasStrategy.PrefixTableAliasAlways)
                     .LeftJoinAlias(db.Parent, "ppp");

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, ppp.Id AS 'ppp_Id', ppp.Name AS 'ppp_Name'\r\n"
                                  + "FROM Child c\r\n" +
                                  "LEFT JOIN Parent ppp ON ppp.Id = c.ParentId", result);
        }
Ejemplo n.º 21
0
        public void JoinSameTable()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child)
                     .LeftJoinAlias(db.Parent, "p1")
                     .LeftJoinAlias(db.Parent, "p2");

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, p1.Id AS 'ParentId', p1.Name AS 'ParentName', p2.Id AS 'ParentId', p2.Name AS 'ParentName'\r\n" +
                                  "FROM Child c\r\n" +
                                  "LEFT JOIN Parent p1 ON p1.Id = c.ParentId\r\n" +
                                  "LEFT JOIN Parent p2 ON p2.Id = c.ParentId", result);
        }
Ejemplo n.º 22
0
        public void JoinSameTableAndWhere()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();
            var q  = new Query(db.Child, QueryColumnAliasStrategy.PrefixTableAliasIfNeeded)
                     .LeftJoinAlias(db.Parent, "p1")
                     .LeftJoinAlias(db.Parent, "p2")
                     .Where("p1.", db.Parent.Name, "LIKE 'a%'",
                            "AND", "p2.", db.Parent.Name, "LIKE 'a%'");

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId, p1.Id AS 'p1_Id', p1.Name AS 'p1_Name', p2.Id AS 'p2_Id', p2.Name AS 'p2_Name'\r\n" +
                                  "FROM Child c\r\n" +
                                  "LEFT JOIN Parent p1 ON p1.Id = c.ParentId\r\n" +
                                  "LEFT JOIN Parent p2 ON p2.Id = c.ParentId\r\n" +
                                  "WHERE p1.Name LIKE 'a%' AND p2.Name LIKE 'a%'", result);
        }
Ejemplo n.º 23
0
        public void TableAliases()
        {
            var db = new TestDatabaseFksTyped();
            var qb = new QueryBuilder();

            var p1 = db.Parent.Alias("p1");
            var p2 = db.Parent.Alias("p2");

            var q = new Query(db.Child)
                    .LeftJoinOn(p1, new Expression(p1.Id, "=", db.Child.ParentId), new None())
                    .LeftJoinOn(p2, new Expression(p2.Id, "=", p1.Id), new None());

            var result = qb.Build(q);

            AssertCustom.AreEqual("SELECT c.Id, c.Name, c.ParentId\r\n" +
                                  "FROM Child c\r\n" +
                                  "LEFT JOIN Parent p1 ON p1.Id = c.ParentId\r\n" +
                                  "LEFT JOIN Parent p2 ON p2.Id = p1.Id", result);
        }
        public void CanExecuteOgr2OgrFromGeoJsonSingleColumnToExistingMsSql()
        {
            AssertCustom.IgnoreOnBuildServer();

            var          gdbFileInfo     = FileUtility.FirstMatchingFileUpDirectoryTree(@"LTInfo.Common\GdalOgr\SampleFileGeodatabase.gdb.zip");
            const string sourceLayerName = "MySampleFeatureClass";
            // Act
            // ---
            const int    totalMilliseconds        = 110000;
            const string pathToOgr2OgrExecutable  = @"C:\Program Files\GDAL\ogr2ogr.exe";
            var          ogr2OgrCommandLineRunner = new Ogr2OgrCommandLineRunner(pathToOgr2OgrExecutable, CoordinateSystemId, totalMilliseconds);
            var          geoJson = ogr2OgrCommandLineRunner.ImportFileGdbToGeoJson(gdbFileInfo, sourceLayerName, true);

            var destinationTableName = "test_table";

            var sqlSelectClause = string.Format("mystringcolumn as attribute, {0} as ProjectID", 77);

            try
            {
                CreateOgrRequiredTables(destinationTableName, null);

                // Act
                // ---
                ogr2OgrCommandLineRunner.ImportGeoJsonToMsSql(geoJson, TempDbSqlDatabase.DatabaseConnectionStringToTempDb, destinationTableName, sqlSelectClause);
                var result = ExecAdHocSql(string.Format("select * from {0}", destinationTableName));

                // Assert
                // ------

                Assert.That(result, Is.Not.Null, "Should have found the table imported");
                Assert.That(result.Rows.Count, Is.EqualTo(6), "Should have gotten 6 rows");
            }
            finally
            {
                // Cleanup
                // -------
                try
                {
                    ExecAdHocSql("drop table " + destinationTableName);
                }
                catch
                {
                    // ignored
                }
                try
                {
                    ExecAdHocSql("drop table spatial_ref_sys");
                }
                catch
                {
                    // ignored
                }
                try
                {
                    ExecAdHocSql("drop table geometry_columns");
                }
                catch
                {
                    // ignored
                }
            }
        }