コード例 #1
0
        public void GetParametersTest()
        {
            var target = new ComplianceRequestProcessor <ComplianceQuery>();

            var    endTime   = new DateTime(2020, 8, 30);
            var    startTime = new DateTime(2020, 8, 1);
            string status    = string.Join(',', new[] { ComplianceStatus.InProgress, ComplianceStatus.Expired });
            Expression <Func <ComplianceQuery, bool> > expression =
                search =>
                search.Type == ComplianceType.MultipleJobs &&
                search.EndTime == endTime &&
                search.ID == "123" &&
                search.StartTime == startTime &&
                search.Status == status;

            var lambdaExpression = expression as LambdaExpression;

            Dictionary <string, string> queryParams = target.GetParameters(lambdaExpression);

            Assert.IsTrue(
                queryParams.Contains(
                    new KeyValuePair <string, string>(nameof(ComplianceQuery.Type), ((int)ComplianceType.MultipleJobs).ToString(CultureInfo.InvariantCulture))));
            Assert.IsTrue(
                queryParams.Contains(
                    new KeyValuePair <string, string>(nameof(ComplianceQuery.EndTime), "08/30/2020 00:00:00")));
            Assert.IsTrue(
                queryParams.Contains(
                    new KeyValuePair <string, string>(nameof(ComplianceQuery.ID), "123")));
            Assert.IsTrue(
                queryParams.Contains(
                    new KeyValuePair <string, string>(nameof(ComplianceQuery.StartTime), "08/01/2020 00:00:00")));
            Assert.IsTrue(
                queryParams.Contains(
                    new KeyValuePair <string, string>(nameof(ComplianceQuery.Status), "in_progress,expired")));
        }
コード例 #2
0
        public void ProcessResults_Populates_MultipleJobs()
        {
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery>
            {
                BaseUrl = BaseUrl2,
                Type    = ComplianceType.MultipleJobs
            };

            List <ComplianceQuery> results = reqProc.ProcessResults(MultipleJobs);

            Assert.IsNotNull(results);
            ComplianceQuery complianceQuery = results.SingleOrDefault();

            Assert.IsNotNull(complianceQuery);
            List <ComplianceJob> jobs = complianceQuery.Jobs;

            Assert.IsNotNull(jobs);
            Assert.AreEqual(2, jobs.Count);
            ComplianceJob job = jobs.FirstOrDefault();

            Assert.IsNotNull(job);
            Assert.AreEqual("NIXh2p", job.JobID);
            Assert.AreEqual("Feline species research", job.JobName);
            Assert.AreEqual("https://storage.googleapis.com/twitter-compliance/test_user_ids", job.DownloadUrl);
            Assert.AreEqual(DateTime.Parse("2020-06-16T11:17:32.819+00:00"), job.DownloadExpiresAt);
            Assert.AreEqual(ComplianceStatus.Complete, job.Status);
        }
コード例 #3
0
        public void ProcessResults_Populates_SingleJob()
        {
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery>
            {
                BaseUrl = BaseUrl2,
                Type    = ComplianceType.SingleJob
            };

            List <ComplianceQuery> results = reqProc.ProcessResults(SingleJob);

            Assert.IsNotNull(results);
            ComplianceQuery complianceQuery = results.SingleOrDefault();

            Assert.IsNotNull(complianceQuery);
            List <ComplianceJob> jobs = complianceQuery.Jobs;

            Assert.IsNotNull(jobs);
            Assert.AreEqual(1, jobs.Count);
            ComplianceJob job = jobs.FirstOrDefault();

            Assert.IsNotNull(job);
            Assert.AreEqual("jU8rFK", job.JobID);
            Assert.AreEqual("Troglomyces twitteri", job.JobName);
            Assert.AreEqual("https://storage.googleapis.com/twitter-compliance/test_user_ids", job.DownloadUrl);
            Assert.AreEqual(DateTime.Parse("2020-09-04T20:04:41.819+00:00"), job.DownloadExpiresAt);
            Assert.AreEqual(ComplianceStatus.Complete, job.Status);
        }
コード例 #4
0
        public void BuildUrl_WithNullParameters_Throws()
        {
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery> {
                BaseUrl = BaseUrl2
            };

            L2TAssert.Throws <NullReferenceException>(() =>
            {
                reqProc.BuildUrl(null);
            });
        }
コード例 #5
0
        public void ProcessResults_WithNoResults_ReturnsNoJobs()
        {
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery> {
                BaseUrl = BaseUrl2
            };

            List <ComplianceQuery> results = reqProc.ProcessResults(ErrorTweet);

            Assert.IsNotNull(results);
            ComplianceQuery complianceQuery = results.SingleOrDefault();

            Assert.IsNotNull(complianceQuery);
            List <ComplianceJob> jobs = complianceQuery.Jobs;

            Assert.IsNull(jobs);
        }
コード例 #6
0
        public void BuildUrl_ForSingleJob_IncludesID()
        {
            const string ExpectedUrl = BaseUrl2 + "tweets/compliance/jobs/123";
            var          reqProc     = new ComplianceRequestProcessor <ComplianceQuery> {
                BaseUrl = BaseUrl2
            };
            var parameters =
                new Dictionary <string, string>
            {
                { nameof(ComplianceQuery.Type), ComplianceType.SingleJob.ToString() },
                { nameof(ComplianceQuery.ID), "123" }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
コード例 #7
0
        public void BuildUrl_ForSingleJobWithoutID_Throws()
        {
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery> {
                BaseUrl = BaseUrl2
            };
            var parameters =
                new Dictionary <string, string>
            {
                { nameof(ComplianceQuery.Type), ComplianceType.SingleJob.ToString() },
                //{ nameof(ComplianceQuery.ID), "123" }
            };

            ArgumentException ex =
                L2TAssert.Throws <ArgumentException>(() =>
                                                     reqProc.BuildUrl(parameters));

            Assert.AreEqual(nameof(TweetQuery.ID), ex.ParamName);
        }
コード例 #8
0
        public void ProcessResults_ForSingleJob_PopulatesInputParameters()
        {
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery>()
            {
                BaseUrl = BaseUrl2,
                Type    = ComplianceType.SingleJob,
                ID      = "123"
            };

            var results = reqProc.ProcessResults(SingleJob);

            Assert.IsNotNull(results);
            Assert.AreEqual(1, results.Count);
            var complianceQuery = results.Single();

            Assert.IsNotNull(complianceQuery);
            Assert.AreEqual(ComplianceType.SingleJob, complianceQuery.Type);
            Assert.AreEqual("123", complianceQuery.ID);
        }
コード例 #9
0
        public void BuildUrl_ForMultipleJobs_IncludesParameters()
        {
            const string ExpectedUrl =
                BaseUrl2 + "tweets/compliance/jobs?" +
                "end_time=2021-01-01T12%3A59%3A59Z&" +
                "start_time=2020-12-31T00%3A00%3A01Z&" +
                "status=in_progress%2Cexpired";
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery> {
                BaseUrl = BaseUrl2
            };
            var parameters =
                new Dictionary <string, string>
            {
                { nameof(ComplianceQuery.Type), ComplianceType.MultipleJobs.ToString() },
                { nameof(ComplianceQuery.EndTime), new DateTime(2021, 1, 1, 12, 59, 59).ToString() },
                { nameof(ComplianceQuery.StartTime), new DateTime(2020, 12, 31, 0, 0, 1).ToString() },
                { nameof(ComplianceQuery.Status), string.Join(',', new[] { ComplianceStatus.InProgress, ComplianceStatus.Expired }) }
            };

            Request req = reqProc.BuildUrl(parameters);

            Assert.AreEqual(ExpectedUrl, req.FullUrl);
        }
コード例 #10
0
        public void ProcessResults_ForMultipleJobs_PopulatesInputParameters()
        {
            var reqProc = new ComplianceRequestProcessor <ComplianceQuery>()
            {
                BaseUrl   = BaseUrl2,
                Type      = ComplianceType.MultipleJobs,
                EndTime   = new DateTime(2020, 12, 31),
                StartTime = new DateTime(2020, 1, 1),
                Status    = ComplianceStatus.Complete
            };

            var results = reqProc.ProcessResults(SingleJob);

            Assert.IsNotNull(results);
            Assert.AreEqual(1, results.Count);
            var complianceQuery = results.Single();

            Assert.IsNotNull(complianceQuery);
            Assert.AreEqual(ComplianceType.MultipleJobs, complianceQuery.Type);
            Assert.AreEqual(new DateTime(2020, 12, 31), complianceQuery.EndTime);
            Assert.AreEqual(new DateTime(2020, 1, 1), complianceQuery.StartTime);
            Assert.AreEqual(ComplianceStatus.Complete, complianceQuery.Status);
        }