示例#1
0
def test_startstop_qualifier():
    qual = stix2.StartStopQualifier(stix2.TimestampConstant('2016-06-01T00:00:00Z'),
                                    datetime.datetime(2017, 3, 12, 8, 30, 0))
    assert str(qual) == "START t'2016-06-01T00:00:00Z' STOP t'2017-03-12T08:30:00Z'"

    qual2 = stix2.StartStopQualifier(datetime.date(2016, 6, 1),
                                     stix2.TimestampConstant('2016-07-01T00:00:00Z'))
    assert str(qual2) == "START t'2016-06-01T00:00:00Z' STOP t'2016-07-01T00:00:00Z'"
示例#2
0
def test_invalid_startstop_qualifier():
    with pytest.raises(ValueError) as excinfo:
        stix2.StartStopQualifier(
            'foo', stix2.TimestampConstant('2016-06-01T00:00:00Z'))
    assert 'is not a valid argument for a Start/Stop Qualifier' in str(excinfo)

    with pytest.raises(ValueError) as excinfo:
        stix2.StartStopQualifier(datetime.date(2016, 6, 1), 'foo')
    assert 'is not a valid argument for a Start/Stop Qualifier' in str(excinfo)
def test_invalid_startstop_qualifier():
    with pytest.raises(ValueError):
        stix2.StartStopQualifier(
            'foo',
            stix2.StringConstant('2016-06-01T00:00:00Z'),
        )

    with pytest.raises(ValueError):
        stix2.StartStopQualifier(
            datetime.date(2016, 6, 1),
            'foo',
        )
def test_startstop_qualifier():
    qual = stix2.StartStopQualifier(
        stix2.StringConstant('2016-06-01T00:00:00Z'),
        stix2.StringConstant('2017-03-12T08:30:00Z'),
    )
    assert str(
        qual) == "START '2016-06-01T00:00:00Z' STOP '2017-03-12T08:30:00Z'"

    qual2 = stix2.StartStopQualifier(
        stix2.StringConstant("2016-06-01T00:00:00Z"),
        stix2.StringConstant('2016-07-01T00:00:00Z'),
    )
    assert str(
        qual2) == "START '2016-06-01T00:00:00Z' STOP '2016-07-01T00:00:00Z'"
 def visitStartStopQualifier(self, ctx):
     children = self.visitChildren(ctx)
     return stix2.StartStopQualifier(children[1], children[3])
    def __generate_random_qualifier(self):
        """
        Generate a random qualifier AST object.

        :return: The qualifier object
        """
        qual_type = random.randrange(3)

        if qual_type == 0:
            repeat_count = random.randint(self.__config.min_repeat_count,
                                          self.__config.max_repeat_count)
            qualifier = stix2.RepeatQualifier(repeat_count)

        elif qual_type == 1:
            within_count = random.randint(self.__config.min_within_count,
                                          self.__config.max_within_count)
            qualifier = stix2.WithinQualifier(within_count)

        else:
            # Let's make the random timestamps near the current time
            # (within a year).
            dur1 = datetime.timedelta(microseconds=random.randrange(
                # 1 year
                1000000 * 60 * 60 * 24 * 365))

            dur2 = datetime.timedelta(microseconds=random.randrange(
                # 1 year
                1000000 * 60 * 60 * 24 * 365))

            if random.random() < 0.5:
                dur1 = -dur1

            if random.random() < 0.5:
                dur2 = -dur2

            now = datetime.datetime.utcnow()
            dt1 = now + dur1
            dt2 = now + dur2

            # Order them as start=dt1, stop=dt2
            if dt1 > dt2:
                dt1, dt2 = dt2, dt1

            elif dt1 == dt2:
                # in the remote chance we get the same timestamp for both,
                # just nudge one ahead...
                dt2 += datetime.timedelta(seconds=1)

            # STIX 2.0 requires string constants and millisecond precision
            # here...
            if self.__stix_version == "2.0":
                dt1_str = stix2.utils.format_datetime(
                    stix2.utils.STIXdatetime(dt1, precision="millisecond"))
                dt1 = stix2.patterns.StringConstant(dt1_str)

                dt2_str = stix2.utils.format_datetime(
                    stix2.utils.STIXdatetime(dt2, precision="millisecond"))
                dt2 = stix2.patterns.StringConstant(dt2_str)

            qualifier = stix2.StartStopQualifier(dt1, dt2)

        return qualifier