def test_validation(stc, tmpdir):
    global PKG, COMMAND, COMMAND_NAME, TEST_DB_FILE

    # FIXME: Do the various checks to ensure the db file's result are properly
    # loaded into the JSON string
    template_file = os.path.join(str(tmpdir), 'template.xml')
    create_template_file(template_file)

    ChartTemplateJsonFileName = template_file
    Title = "Test Chart"
    XAxisTitle = "Time"
    XAxisCategories = ["1t", "2t", "3t"]
    YAxisTitle = "Routes"
    YAxisCategories = ["a", "b", "c"]
    Series = ["Select TotalFrameCount from AnalyzerPortResults"]
    TemplateModifier = "{\"yAxis\": {\"title\": {\"text\": \"Modified Label\"}}}"
    SrcDatabase = "LAST_ITERATION"
    ReportGroup = "LEVEL_1"
    assert export_to_json.validate(ChartTemplateJsonFileName, Title,
                                   XAxisTitle, XAxisCategories,
                                   YAxisTitle, YAxisCategories,
                                   Series, TemplateModifier, SrcDatabase,
                                   ReportGroup) == ""

    assert export_to_json.validate(ChartTemplateJsonFileName, "",
                                   "", [],
                                   "", [],
                                   Series, "", SrcDatabase,
                                   ReportGroup) == ""

    assert "Invalid Chart Template" in \
        export_to_json.validate("", Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                Series, TemplateModifier, SrcDatabase,
                                ReportGroup)
    assert "1 is not of type u'string'" in \
        export_to_json.validate(ChartTemplateJsonFileName, 1,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                Series, TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "Invalid Chart Template: """ in \
        export_to_json.validate("", Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                Series, TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "[1, 2] is not of type u'string'" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                [1, 2], XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                Series, TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "1 is not of type u'array'" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, 1,
                                YAxisTitle, YAxisCategories,
                                Series, TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "1 is not of type u'string'" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, XAxisCategories,
                                1, YAxisCategories,
                                Series, TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "1 is not of type u'array'" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, 1,
                                Series, TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "1 is not of type u'array'" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                1, TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "Invalid Series specified: []" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                [], TemplateModifier, SrcDatabase,
                                ReportGroup)

    assert "Type Error: expected string or buffer" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                Series, [1], SrcDatabase,
                                ReportGroup)

    assert "Empty SrcDatabase property is not allowed" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                Series, TemplateModifier, "",
                                ReportGroup)

    assert "Empty ReportGroup property is not allowed" in \
        export_to_json.validate(ChartTemplateJsonFileName, Title,
                                XAxisTitle, XAxisCategories,
                                YAxisTitle, YAxisCategories,
                                Series, TemplateModifier, SrcDatabase,
                                "")

    # Test for invalid SrcDatabase and ReportGroup enums
    fail_msg = ''
    with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd:
        try:
            cmd.Set('SrcDatabase', 'invalid')
        except RuntimeError as e:
            fail_msg = str(e)
    assert 'CStcInvalidArgument Invalid enum value' in fail_msg

    fail_msg = ''
    with AutoCommand('.'.join([PKG, COMMAND_NAME])) as cmd:
        try:
            cmd.Set('ReportGroup', 'invalid')
        except RuntimeError as e:
            fail_msg = str(e)
    assert 'CStcInvalidArgument Invalid enum value' in fail_msg