示例#1
0
        public static void InitializeTestSpecs(TestContext testContext)
        {
            _devices          = new Dictionary <string, Device>();
            _distributions    = new Dictionary <string, Distribution>();
            _testDeviceSerial = $"td-{DateTime.UtcNow.Ticks}";

            using (var client = new M2XClient(_masterKey))
            {
                var createDeviceParms  = $"{{ \"base_device\": \"d781ab7460136af9db496c97172a6e6c\", \"name\": \"{Constants.TestDeviceNamePrefix} {DateTime.UtcNow.Ticks}\", \"description\": \"{Constants.TestDeviceDescription}\", \"serial\": \"{_testDeviceSerial}\", \"visibility\": \"private\" }}";
                var createDeviceResult = client.CreateDevice(createDeviceParms).Result;
                var device             = JsonConvert.DeserializeObject <Device>(createDeviceResult.Raw);
                _devices.Add("primary", device);
                _testDeviceId = device.id;

                var testDevice      = client.Device(device.id);
                var updateTagsParms = "{ \"tags\": \"test only\" }";
                var resultTags      = testDevice.Update(updateTagsParms).Result;
                for (var i = 0; i < 5; i++)
                {
                    var updateLocationParms = $"{{ \"name\": \"Test Device Location{i + 1}\", \"latitude\": {(Constants.TestDeviceLatitude + i)}, \"longitude\": {(Constants.TestDeviceLongitude + i)} }}";
                    var resultLocation      = testDevice.UpdateLocation(updateLocationParms).Result;
                }
                var updateMetadataParms = $"{{ \"{Constants.TestMetadataDefaultFieldName}\": \"{Constants.TestMetadataDefaultFieldValue}\" }} ";
                var resultMetadata      = testDevice.UpdateMetadata(updateMetadataParms);

                var stream01UpdateParms = $"{{ \"values\": [ {{ \"timestamp\": \"{DateTime.Now.AddSeconds(-10).ToString("yyyy-MM-ddTHH:mm:ssZ")}\", \"value\": 98.6 }}, {{ \"timestamp\": \"{DateTime.Now.AddSeconds(-5).ToString("yyyy-MM-ddTHH:mm:ssZ")}\", \"value\": 98.7 }} ] }}";
                var stream01            = testDevice.Stream(Constants.TestStreamName001);
                var resultStream01Post  = stream01.PostValues(stream01UpdateParms).Result;
                System.Threading.Thread.Sleep(250);

                var stream02UpdateParms = $"{{ \"values\": [ {{ \"timestamp\": \"{DateTime.Now.AddSeconds(-10).ToString("yyyy-MM-ddTHH:mm:ssZ")}\", \"value\": \"normal\" }}, {{ \"timestamp\": \"{DateTime.Now.AddSeconds(-5).ToString("yyyy-MM-ddTHH:mm:ssZ")}\", \"value\": \"normal\" }} ] }}";
                var stream02            = testDevice.Stream(Constants.TestStreamName002);
                var resultStream02Post  = stream02.PostValues(stream02UpdateParms).Result;
                System.Threading.Thread.Sleep(250);

                var testDistributionCreateParms  = $"{{ \"name\": \"Test Distribution {DateTime.Now.Ticks}\", \"description\": \"This is just a test!\", \"visibility\": \"private\", \"base_device\": \"{_testDeviceId}\", \"metadata\": {{ \"{Constants.TestMetadataDefaultFieldName}\": \"{Constants.TestMetadataDefaultFieldValue}\" }} }}";
                var testDistributionCreateResult = client.CreateDistribution(testDistributionCreateParms).Result;
                _accountIsNotPro = testDistributionCreateResult.Error;

                if (_accountIsNotPro)
                {
                    return;
                }

                var testDistribution           = JsonConvert.DeserializeObject <Distribution>(testDistributionCreateResult.Raw);
                var distributionAddDeviceParms = $"{{ \"serial\": \"td-{(DateTime.UtcNow.Ticks + 50)}\" }}";
                var distributionDeviceData     = client.Distribution(testDistribution.id).AddDevice(distributionAddDeviceParms).Result;
                var distributionDevice         = JsonConvert.DeserializeObject <Device>(distributionDeviceData.Raw);
                _devices.Add(distributionDevice.serial, distributionDevice);
                _distributions.Add("primary", testDistribution);
                System.Threading.Thread.Sleep(250);
            }
        }
示例#2
0
        public async Task CanAccess_ApiKey_SingleDistribution_ById_AndUpdate_DistributionMetadata()
        {
            if (_accountIsNotPro)
            {
                Assert.Inconclusive("The API key used for this test run is not enabled for Full Access. Please upgrade the account or use an API key that has the necessary permissions.");
                return;
            }

            using (var client = new M2XClient(_masterKey))
            {
                var distributionName         = $"*** PLEASE DELETE ME *** Test Auto Created Distribution {DateTime.UtcNow.Ticks}";
                var distributionParameters   = $"{{ \"name\": \"{distributionName}\", \"visibility\": \"private\", \"metadata\": {{ \"{Constants.TestMetadataDefaultFieldName}\": \"{Constants.TestMetadataDefaultFieldValue}\" }} }}";
                var createDistributionResult = await client.CreateDistribution(distributionParameters);

                Assert.IsNotNull(createDistributionResult);
                Assert.IsFalse(createDistributionResult.Error);
                Assert.IsFalse(createDistributionResult.ServerError);
                Assert.IsNull(createDistributionResult.WebError);
                Assert.IsFalse(string.IsNullOrWhiteSpace(createDistributionResult.Raw));

                var distributionData = JsonConvert.DeserializeObject <Distribution>(createDistributionResult.Raw);
                var distribution     = client.Distribution(distributionData.id);
                _distributions.Add(distributionName, distributionData);

                var updateMetaDataValue  = "The man sitting next to the man...";
                var updateMetaDataParams = $"{{ \"owner\": \"{updateMetaDataValue}\" }}";
                var result = await distribution.UpdateMetadata(updateMetaDataParams);

                RequestWasProcessedAndReturnedExpectedValue(result);

                var verifyUpdateResult = await distribution.Metadata();

                Assert.IsNotNull(verifyUpdateResult);
                Assert.IsFalse(verifyUpdateResult.Error);
                Assert.IsFalse(verifyUpdateResult.ServerError);
                Assert.IsNull(verifyUpdateResult.WebError);
                Assert.IsFalse(string.IsNullOrWhiteSpace(verifyUpdateResult.Raw));
                Assert.IsTrue(verifyUpdateResult.Raw.Length > 6);
                Assert.IsTrue(verifyUpdateResult.Raw.ToLowerInvariant().Contains(updateMetaDataValue.ToLowerInvariant()));
            }
        }