Esempio n. 1
0
        public void TestGetSheetInfo()
        {
            // Make request
            string uri = $"data/v2/importSpreadsheet/sample?hrow=2&drow=3&fileId={_fileToken}&fileFormat=Excel&sheet=Assembly+Point";

            using (var request = new PlatformHttpRequest(uri))
            {
                HttpWebResponse response = request.GetResponse();

                // check that it worked (200)
                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            }
        }
        public void TestGetType_GenerateForm_ById( )
        {
            var aaemployee = Entity.Get(new EntityRef("test", "employee"));

            using (
                var request = new PlatformHttpRequest(string.Format(@"data/v1/type/{0}/generateform", aaemployee.Id)))
            {
                HttpWebResponse response = request.GetResponse( );

                // check that it worked (200)
                Assert.IsTrue(response.StatusCode == HttpStatusCode.OK);
            }
        }
Esempio n. 3
0
        public void GetForm( )
        {
            if (_formId == 0)
            {
                _formId = EDC.ReadiNow.Expressions.CodeNameResolver.GetInstance(_formName, "Custom Edit Form").Id;
            }

            using (Profiler.Measure("Run form test"))
                using (var request = new PlatformHttpRequest(string.Format(@"data/v1/form/{0}", _formId), PlatformHttpMethod.Get))
                {
                    HttpWebResponse response = request.GetResponse( );
                    Assert.IsTrue(response.StatusCode == HttpStatusCode.OK);
                }
        }
Esempio n. 4
0
        public void Test_NoAccess()
        {
            UserAccount userAccount = null;

            ReadiNow.Model.Report report = null;
            HttpWebResponse       response;

            try
            {
                userAccount      = new UserAccount();
                userAccount.Name = "Test user " + Guid.NewGuid();
                userAccount.Save();

                report = new ReadiNow.Model.Report();
                report.Save();

                // Sanity check
                using (new SetUser(userAccount))
                {
                    IDictionary <long, bool> checkResult = Factory.EntityAccessControlService.Check(
                        new[] { new EntityRef(report), },
                        new[] { Permissions.Read });

                    Assert.That(checkResult, Has.Exactly(1).Property("Key").EqualTo(report.Id).And.Property("Value").False);
                }

                // Load a report that the user cannot access
                using (var request = new PlatformHttpRequest(@"data/v1/report/" + report.Id + "?page=0,1", PlatformHttpMethod.Get, userAccount))
                {
                    response = request.GetResponse();

                    Assert.That(response, Has.Property("StatusCode").EqualTo(HttpStatusCode.Forbidden),
                                "Web service call failed");
                }
            }
            finally
            {
                if (userAccount != null)
                {
                    // Will cascade delete and remove the access rule
                    try { userAccount.Delete(); }
                    catch (Exception) { }
                }
                if (report != null)
                {
                    try { report.Delete(); }
                    catch (Exception) { }
                }
            }
        }
Esempio n. 5
0
        public void Test_PasswordEmptyInResponse()
        {
            long                  administratorId;
            long                  passwordFieldId;
            long                  nameFieldId;
            List <long>           entitiesToDelete;
            HttpWebResponse       response;
            JsonEntityQueryResult jsonEntityQueryResult;
            JsonEntity            jsonEntity;

            entitiesToDelete = new List <long>();
            try
            {
                administratorId = Entity.GetId("core:administratorUserAccount");
                Assert.That(administratorId, Is.Positive, "Missing administrator account");

                passwordFieldId = Entity.GetId("core:password");
                Assert.That(passwordFieldId, Is.Positive, "Missing password field");

                nameFieldId = Entity.GetId("core:name");
                Assert.That(nameFieldId, Is.Positive, "Missing name field");

                using (PlatformHttpRequest request = new PlatformHttpRequest(string.Format(@"data/v1/entity/{0}?request=name,password", administratorId)))
                {
                    response = request.GetResponse();

                    Assert.That(response, Has.Property("StatusCode").EqualTo(HttpStatusCode.OK),
                                "Web service call failed");
                    jsonEntityQueryResult = request.DeserialiseResponseBody <JsonEntityQueryResult>();

                    Assert.That(jsonEntityQueryResult.Entities, Has.Count.EqualTo(1), "Incorrect Entities count");
                    jsonEntity = jsonEntityQueryResult.Entities.First();
                    Assert.That(jsonEntity.Fields, Has.Exactly(1).Property("FieldId").EqualTo(passwordFieldId)
                                .And.Property("Value").Matches("[*]+"));
                    Assert.That(jsonEntity.Fields, Has.Exactly(1).Property("FieldId").EqualTo(nameFieldId)
                                .And.Property("Value").EqualTo("Administrator"));
                }
            }
            finally
            {
                try
                {
                    Entity.Delete(entitiesToDelete);
                }
                catch (Exception)
                {
                    // Do nothing
                }
            }
        }
 private static ExportDataInfo PostExportRequest(string url, HttpStatusCode expectedResposeCode, ReportParameters parameters)
 {
     using (var request = new PlatformHttpRequest(url, PlatformHttpMethod.Post))
     {
         request.PopulateBody(parameters);
         var response = request.GetResponse();
         Assert.AreEqual(expectedResposeCode, response.StatusCode, "We have a {0} returned, expected {1}", response.StatusCode, expectedResposeCode);
         if (expectedResposeCode != HttpStatusCode.OK)
         {
             return(null);
         }
         return(request.DeserialiseResponseBody <ExportDataInfo>());
     }
 }
Esempio n. 7
0
        public void TestGetForm_ById( )
        {
            var employeeType = CodeNameResolver.GetTypeByName("AA_Employee").As <EntityType>( );
            var employeeForm = employeeType.DefaultEditForm;

            using (
                var request = new PlatformHttpRequest(string.Format(@"data/v1/form/{0}", employeeForm.Id)))
            {
                HttpWebResponse response = request.GetResponse( );

                // check that it worked (200)
                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            }
        }
        public void TestGetInstance_DefaultFromForTypeWithNoForm( )
        {
            using (var request = new PlatformHttpRequest(@"data/v1/type/core/logActivityLogEntry/defaultForm"))
            {
                HttpWebResponse response = request.GetResponse( );

                // check that it worked (200)
                Assert.IsTrue(response.StatusCode == HttpStatusCode.OK);

                var result = request.DeserialiseResponseBody <JsonQueryResult>( );

                Assert.IsTrue(9999 < ReturnedFormId(result), "The form is a generated one");
            }
        }
        public void Test_ChangePassword(Func <UserAccount> userAccountFactory, string oldPassword, string newPassword, HttpStatusCode expectedHttpStatusCode, string expectedMessage)
        {
            UserAccount     userAccount;
            HttpWebResponse response;
            HttpError       httpError;

            userAccount = null;
            try
            {
                using (new SecurityBypassContext())
                {
                    userAccount = userAccountFactory();
                }
                using (PlatformHttpRequest loginRequest = new PlatformHttpRequest("data/v1/login/spchangepassword", PlatformHttpMethod.Post,
                                                                                  doNotAuthenticate: true))
                {
                    loginRequest.PopulateBody(new JsonPasswordChangeRequest
                    {
                        Username    = userAccount.Name,
                        OldPassword = oldPassword,
                        NewPassword = newPassword,
                        Tenant      = RequestContext.GetContext().Tenant.Name
                    });

                    response = loginRequest.GetResponse();
                    Assert.That(response, Has.Property("StatusCode").EqualTo(expectedHttpStatusCode));

                    if (expectedMessage != null)
                    {
                        httpError = loginRequest.DeserialiseResponseBody <HttpError>();
                        Assert.That(httpError, Has.Property("Message").EqualTo(expectedMessage));
                    }
                }
            }
            finally
            {
                if (userAccount != null)
                {
                    try
                    {
                        SecurityBypassContext.Elevate(() => Entity.Delete(userAccount));
                    }
                    catch (Exception)
                    {
                        // Ignore errors
                    }
                }
            }
        }
        public void Test_InvalidLogin(Func <UserAccount> userAccountFactory, string password, HttpStatusCode expectedHttpStatusCode, string expectedMessage)
        {
            UserAccount     userAccount;
            HttpWebResponse response;
            HttpError       httpError;

            userAccount = null;
            try
            {
                using (new SecurityBypassContext())
                {
                    userAccount = userAccountFactory();
                }
                using (PlatformHttpRequest loginRequest = new PlatformHttpRequest("data/v1/login/spsignin", PlatformHttpMethod.Post,
                                                                                  doNotAuthenticate: true))
                {
                    loginRequest.PopulateBody(new JsonLoginCredential
                    {
                        Username   = userAccount.Name,
                        Password   = password,
                        Tenant     = RequestContext.GetContext().Tenant.Name,
                        Persistent = false
                    });

                    response = loginRequest.GetResponse();
                    Assert.That(response, Has.Property("StatusCode").EqualTo(expectedHttpStatusCode));

                    if (expectedMessage != null)
                    {
                        httpError = loginRequest.DeserialiseResponseBody <HttpError>();
                        Assert.That(httpError, Has.Property("Message").EqualTo(expectedMessage));
                    }
                }
            }
            finally
            {
                if (userAccount != null)
                {
                    try
                    {
                        SecurityBypassContext.Elevate(() => Entity.Delete(userAccount));
                    }
                    catch (Exception)
                    {
                        // Do nothing on an error. This is just clean up code.
                    }
                }
            }
        }
        public void Test_PasswordChange_TooSimplePassword()
        {
            UserAccount     userAccount;
            const string    initialPassword = "******";
            HttpWebResponse response;
            HttpError       responseBody;

            userAccount = null;
            try
            {
                userAccount = new UserAccount
                {
                    Name               = "Test User " + Guid.NewGuid(),
                    Password           = initialPassword,
                    AccountStatus_Enum = UserAccountStatusEnum_Enumeration.Active
                };
                userAccount.Save();

                // Change the password
                using (PlatformHttpRequest request = new PlatformHttpRequest("data/v1/password", PlatformHttpMethod.Post, userAccount))
                {
                    // Does not meet minimum complexity requirements for the default password complexity rule. This may fail if the
                    // default minimum password complexity requirements change.
                    request.PopulateBody(new PasswordChangeInfo
                    {
                        CurrentPassword = initialPassword,
                        Password        = "******"
                    });

                    response = request.GetResponse();
                    Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));

                    responseBody = request.DeserialiseResponseBody <HttpError>( );
                    Assert.That(responseBody.Message,
                                Is.StringStarting("The password is too short; the minimum length is "));
                }
            }
            finally
            {
                try
                {
                    Entity.Delete(userAccount);
                }
                catch (Exception)
                {
                    // Ignore any errors
                }
            }
        }
Esempio n. 12
0
        public void Test001Get()
        {
            var someId = Entity.GetId("test", "peterAylett");

            var actionRequest = new ActionRequest {
                SelectedResourceIds = new[] { someId }
            };

            using (var request = new PlatformHttpRequest("data/v1/actions", PlatformHttpMethod.Post))
            {
                request.PopulateBody(actionRequest);
                HttpWebResponse response = request.GetResponse();
                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            }
        }
Esempio n. 13
0
        public void Test_AccessRuleCreate_NonDefinition()
        {
            UserAccount     userAccount;
            Subject         subject;
            EntityType      entityType;
            List <long>     entitiesToDelete;
            HttpWebResponse response;

            entitiesToDelete = new List <long>();
            try
            {
                userAccount      = Entity.Create <UserAccount>();
                userAccount.Name = Guid.NewGuid().ToString() + DateTime.Now;
                userAccount.Save();
                entitiesToDelete.Add(userAccount.Id);

                subject = Entity.Create <Subject>();
                subject.Save();
                entitiesToDelete.Add(subject.Id);

                entityType = Entity.Create <EntityType>();
                entityType.Save();
                entitiesToDelete.Add(entityType.Id);

                using (var request = new PlatformHttpRequest("data/v1/accessrule", PlatformHttpMethod.Post, userAccount))
                {
                    request.PopulateBody(new NewAccessRuleInfo
                    {
                        SubjectId         = subject.Id,
                        SecurableEntityId = entityType.Id
                    });

                    response = request.GetResponse();
                    Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));
                }
            }
            finally
            {
                try
                {
                    Entity.Delete(entitiesToDelete);
                }
                catch (Exception)
                {
                    // Do nothing
                }
            }
        }
Esempio n. 14
0
        public void TestGetInstance_ForceGenerateForm( )
        {
            var expectedForm = Entity.Get <Definition>(new EntityRef("test", "employee")).DefaultEditForm;

            using (var request = new PlatformHttpRequest(@"data/v1/type/test/employee/defaultForm"))
            {
                HttpWebResponse response = request.GetResponse( );

                // check that it worked (200)
                Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

                var result = request.DeserialiseResponseBody <JsonQueryResult>( );

                Assert.AreEqual(expectedForm.Id, ReturnedFormId(result), "The form is a generated one");
            }
        }
        public void Test_PasswordChange_EmptyPassword()
        {
            UserAccount     userAccount;
            const string    initialPassword = "******";
            HttpWebResponse response;
            HttpError       responseBody;

            userAccount = null;
            try
            {
                userAccount = new UserAccount
                {
                    Name               = "Test User " + Guid.NewGuid(),
                    Password           = initialPassword,
                    AccountStatus_Enum = UserAccountStatusEnum_Enumeration.Active
                };
                userAccount.Save();

                // Change the password
                using (PlatformHttpRequest request = new PlatformHttpRequest("data/v1/password", PlatformHttpMethod.Post, userAccount))
                {
                    request.PopulateBody(new PasswordChangeInfo
                    {
                        CurrentPassword = initialPassword,
                        Password        = string.Empty
                    });

                    response = request.GetResponse();
                    Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest));

                    responseBody = request.DeserialiseResponseBody <HttpError>();
                    Assert.That(responseBody.Message, Is.EqualTo("A password is required."));
                }
            }
            finally
            {
                try
                {
                    Entity.Delete(userAccount);
                }
                catch (Exception)
                {
                    // Ignore any errors
                }
            }
        }
Esempio n. 16
0
        private CompileResult TestCompile(string json)
        {
            var url = @"data/v1/calceditor/compile";

            using (var request = new PlatformHttpRequest(url, PlatformHttpMethod.Post))
            {
                request.PopulateBodyString(json.Replace("'", "\""));

                var response = request.GetResponse();

                // check that it worked (200)
                Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

                // Check response body
                return(request.DeserialiseResponseBody <CompileResult>());
            }
        }
Esempio n. 17
0
        public void Test_Ensure_Tenant_Not_Discoverable(string uri)
        {
            // If the key does not belong to the tenant, the behavior between right tenant and wrong tenant should be indistinguisable.
            uri = uri.Replace("right", "edc");

            // Test correct tenant
            using (var request = new PlatformHttpRequest(uri, PlatformHttpMethod.Post, null, true))
            {
                string json = "{ 'field1' : 'Hello world' }";
                request.PopulateBodyString(json.Replace("'", @""""));

                // Run
                request.GetResponse( );
                //Assert.Throws<WebException>( ( ) => request.GetResponse( ) );
                Assert.That(request.HttpWebResponse.StatusCode, Is.EqualTo(HttpStatusCode.Unauthorized));
            }
        }
Esempio n. 18
0
        public void PostActionsWithInvalidSelection()
        {
            using (var request = new PlatformHttpRequest(@"data/v1/actions", PlatformHttpMethod.Post))
            {
                request.PopulateBody(new ActionRequest {
                    SelectedResourceIds = new long[] { 100000000 }
                });
                var response = request.GetResponse();

                response.Should().NotBeNull();
                response.StatusCode.Should().Be(HttpStatusCode.OK, "We have a {0} returned, expected {1}.", response.StatusCode, HttpStatusCode.OK);

                var body = request.DeserialiseResponseBody <ActionResponse>();
                body.Should().NotBeNull();
                body.Actions.Should().NotBeNull().And.BeEmpty();
            }
        }
        public void Test07DownloadCsvExportedFile()
        {
            long           reportId = GetReportByAlias("test:managerReport");
            ExportDataInfo res      = PostExportRequest(string.Format(@"data/v2/report/export/{0}/csv", reportId), HttpStatusCode.OK,
                                                        new ReportParameters());

            Assert.IsNotNullOrEmpty(res.FileHash, "The exported file has been saved to the database.");
            using (
                PlatformHttpRequest request =
                    new PlatformHttpRequest(
                        string.Format(@"data/v2/report/export/download/{0}/sample/csv", res.FileHash),
                        PlatformHttpMethod.Get))
            {
                HttpWebResponse response = request.GetResponse();
                Assert.IsTrue(response.StatusCode == HttpStatusCode.OK, "We have a {0} returned, expected {1}",
                              response.StatusCode, HttpStatusCode.OK);
                Assert.AreEqual(response.ContentType, "text/html");
                using (Stream stream = response.GetResponseStream())
                {
                    Assert.IsNotNull(stream);
                    using (FileStream fileStream = File.Create(CsvFile))
                    {
                        CopyToFile(stream, fileStream);
                        //Read data from the file
                        fileStream.Position = 0;
                        StreamReader sr            = new StreamReader(fileStream);
                        int          readLineCount = 0;
                        while (!sr.EndOfStream)
                        {
                            sr.ReadLine();
                            readLineCount++;
                        }
                        Assert.Greater(readLineCount, 0, "There are no rows in the file.");

                        //Read the first row
                        fileStream.Position = 0;
                        sr = new StreamReader(fileStream);
                        string rowString = sr.ReadLine();
                        Assert.AreEqual("Name", rowString);
                        //read secong row
                        string row2 = sr.ReadLine();
                        Assert.AreEqual("Glenn Uidam", row2);
                    }
                }
            }
        }
Esempio n. 20
0
        public static JsonQueryResult RunRequest(string query, HttpStatusCode expected = HttpStatusCode.OK)
        {
            using (var request = new PlatformHttpRequest(@"data/v2/entity", PlatformHttpMethod.Post))
            {
                request.PopulateBodyString(query);

                var response = request.GetResponse( );

                // check that it worked (200)
                Assert.That(response.StatusCode, Is.EqualTo(expected));

                // Check response body
                JsonQueryResult res = request.DeserialiseResponseBody <JsonQueryResult>( );
                Assert.IsNotNull(res);

                return(res);
            }
        }
Esempio n. 21
0
        [TestCase("{ 'field1' : 123, 'lookup1' : 'IDontExist' }", "E1003", "No resources were found that matched 'IDontExist'.")]  // Bug 26761
        public void Test_PostCreate_WebArgumentException(string json, string expectCode, string expectMessage)
        {
            string uri = string.Format("api/{0}/{1}/{2}?key={3}", TenantName, ApiAddress, EndpointAddress, ApiKey);

            using (var request = new PlatformHttpRequest(uri, PlatformHttpMethod.Post, null, true))
            {
                request.PopulateBodyString(json.Replace("'", @""""));

                var response = request.GetResponse();

                // check that it worked (201)
                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);

                MessageResponse message = request.DeserialiseResponseBody <MessageResponse>();
                Assert.That(message.PlatformMessageCode, Is.EqualTo(expectCode));
                Assert.That(message.Message, Is.EqualTo(expectMessage));
            }
        }
Esempio n. 22
0
        private static ImportResultInfo TestUpload(ImportConfig config, bool testRun, Action <PlatformHttpRequest> callback, out long importRunId)
        {
            // ImportSpreadsheetData
            string uri = $"data/v2/importSpreadsheet/import?config={config.Id}&file={_fileToken}&filename={TestFileName}";

            if (testRun)
            {
                uri += "&testrun=true";
            }

            using (var request = new PlatformHttpRequest(uri))
            {
                if (callback != null)
                {
                    callback(request);
                }

                HttpWebResponse response = request.GetResponse( );
                // check that it worked (200)
                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

                importRunId = request.DeserialiseResponseBody <long>( );
            }

            // GetImportStatus
            for (int count = 0; count < 50; count++)
            {
                uri = $"data/v2/importSpreadsheet/import/{importRunId}";
                using (var request = new PlatformHttpRequest(uri))
                {
                    HttpWebResponse response = request.GetResponse( );
                    // check that it worked (200)
                    Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

                    ImportResultInfo status = request.DeserialiseResponseBody <ImportResultInfo>( );
                    if (status.ImportStatus != ImportStatus.InProgress)
                    {
                        return(status);
                    }
                }
                Thread.Sleep(500);
            }
            throw new Exception("Took too long..");
        }
        public void Test08DownloadWordExportedFile()
        {
            long           reportId = GetReportByAlias("test:managerReport");
            ExportDataInfo res      = PostExportRequest(string.Format(@"data/v2/report/export/{0}/word", reportId), HttpStatusCode.OK,
                                                        new ReportParameters());

            Assert.IsNotNullOrEmpty(res.FileHash, "The exported file has been saved to the database.");
            using (
                PlatformHttpRequest request =
                    new PlatformHttpRequest(
                        string.Format(@"data/v2/report/export/download/{0}/sample/word", res.FileHash),
                        PlatformHttpMethod.Get))
            {
                HttpWebResponse response = request.GetResponse();
                Assert.IsTrue(response.StatusCode == HttpStatusCode.OK, "We have a {0} returned, expected {1}",
                              response.StatusCode, HttpStatusCode.OK);
                Assert.AreEqual(response.ContentType, "text/html");
                using (Stream stream = response.GetResponseStream())
                {
                    Assert.IsNotNull(stream);
                    using (FileStream fileStream = File.Create(WordFile))
                    {
                        CopyToFile(stream, fileStream);
                        fileStream.Position = 0;
                        using (WordprocessingDocument doc = WordprocessingDocument.Open(fileStream, false))
                        {
                            Body body = doc.MainDocumentPart.Document.Body;
                            DocumentFormat.OpenXml.Wordprocessing.Table table = body.Descendants <DocumentFormat.OpenXml.Wordprocessing.Table>().FirstOrDefault();
                            Assert.IsNotNull(table, "The word document hasn't got a table");
                            var rows = table.Descendants <TableRow>();
                            Assert.Greater(rows.Count(), 0, "There are no rows in the table");
                            //Get first row.
                            TableRow  row  = rows.First();
                            TableCell cell = row.GetFirstChild <TableCell>();
                            Assert.AreEqual("Name", cell.FirstChild.InnerText);
                            //Get second row
                            TableRow  row1  = rows.Skip(1).First();
                            TableCell cell1 = row1.GetFirstChild <TableCell>();
                            Assert.AreEqual("Glenn Uidam", cell1.FirstChild.InnerText);
                        }
                    }
                }
            }
        }
        public void Test_PostCreate_OK( )
        {
            string uri = string.Format("upload/{0}/{1}/{2}?key={3}", TenantName, ApiAddress, EndpointAddress, ApiKey);

            using (var request = new PlatformHttpRequest(uri, PlatformHttpMethod.Post, null, true))
            {
                Stream testFile = ImportSpreadsheetControllerTests.GetStream( );
                request.PopulateBodyStream(testFile, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

                var response = request.GetResponse( );

                // check that it worked (200)
                Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            }

            // Check run started
            using (new TenantAdministratorContext(TenantName))
            {
                //Thread.Sleep( 1000 );
                ImportRun run = importConfig.ImportRuns.SingleOrDefault( );
                Assert.That(run, Is.Not.Null);

                // Poll progress
                int count = 25;
                while (run.ImportRunStatus_Enum == WorkflowRunState_Enumeration.WorkflowRunStarted || run.ImportRunStatus_Enum == WorkflowRunState_Enumeration.WorkflowRunQueued)
                {
                    Thread.Sleep(100);

                    run = Entity.Get <ImportRun>(run.Id);
                    Assert.That(run, Is.Not.Null);
                    if (count-- == 0)
                    {
                        throw new Exception("Timed out: " + run.ImportRunStatus_Enum);
                    }
                }
                Assert.That(run.ImportRunStatus_Enum, Is.EqualTo(WorkflowRunState_Enumeration.WorkflowRunCompleted), run.ImportMessages);
                Assert.That(run.ImportRecordsSucceeded, Is.EqualTo(7));

                // Check instances
                var instances = Entity.GetInstancesOfType(type.Id).ToList( );
                Assert.That(instances, Has.Count.EqualTo(7));
            }
        }
Esempio n. 25
0
        public void LoadWildcardFieldsWhenFieldsHaveNoAlias()
        {
            using (var request = new PlatformHttpRequest(@"data/v2/entity?typename=Definition&name=Pizza&request=name,instancesOfType.*", PlatformHttpMethod.Get))
            {
                var response = request.GetResponse();

                // check that it worked (200)
                Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

                // Check response body
                if (request.HttpWebResponse == null)
                {
                    throw new NullReferenceException();
                }
                var reader = new StreamReader(request.HttpWebResponse.GetResponseStream());
                var body   = reader.ReadToEnd();
                Assert.IsNotEmpty(body);
            }
        }
Esempio n. 26
0
        public void TestActionsMenuNoCreateAccessMultipleTypes()
        {
            var actionRequest = new ActionRequest
            {
                ReportId             = Entity.GetByName <ReadiNow.Model.Report>("Staff Report").FirstOrDefault().Id,
                ActionDisplayContext = ActionContext.ActionsMenu
            };

            var userAccount = Entity.GetByName <UserAccount>("Nelle.Odom").FirstOrDefault();

            using (var request = new PlatformHttpRequest("data/v1/actions", PlatformHttpMethod.Post, userAccount))
            {
                request.PopulateBody(actionRequest);
                HttpWebResponse response = request.GetResponse();
                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

                var actionResponse = request.DeserialiseResponseBody <ActionResponse>();
                Assert.IsTrue(actionResponse.Actions.All(a => a.HtmlActionState != "newHolder"));
                Assert.IsTrue(actionResponse.Actions.All(a => a.HtmlActionState != "createForm"));
            }
        }
Esempio n. 27
0
        public static JsonQueryResult RunBatchTest(string query, HttpStatusCode expectedResult = HttpStatusCode.OK, int resultCount = 1)
        {
            using (var request = new PlatformHttpRequest(@"data/v2/entity", PlatformHttpMethod.Post))
            {
                request.PopulateBodyString(query);

                var response = request.GetResponse();

                // check that it worked (200)
                Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

                // Check response body
                JsonQueryResult res = request.DeserialiseResponseBody <JsonQueryResult>();
                Assert.IsNotNull(res);

                Assert.AreEqual(resultCount, res.Results.Count, "res.Results.Count");
                Assert.AreEqual(expectedResult, res.Results[0].Code, "res.Results[0].Code");

                return(res);
            }
        }
        public void LoginFailsWithDisabledTenant()
        {
            //Arrange
            var ctx = RequestContext.GetContext();

            using (var request = new PlatformHttpRequest("data/v1/login/spsignin", PlatformHttpMethod.Post, doNotAuthenticate: true))
            {
                var tenant = default(Tenant);

                try
                {
                    using (new GlobalAdministratorContext())
                    {
                        tenant = Entity.Get <Tenant>(ctx.Tenant.Id, new IEntityRef[] { Tenant.Name_Field, Tenant.IsTenantDisabled_Field }).AsWritable <Tenant>();
                        tenant.IsTenantDisabled = true;
                        tenant.Save();
                    }

                    //Act
                    LoginUsingTestCredentials(request);
                    var response = request.GetResponse();

                    //Assert
                    response.StatusCode.Should().Be(HttpStatusCode.Unauthorized, "Login should not succeed when Tenant is disabled.");
                }
                finally
                {
                    tenant.Should().NotBeNull("The tenant was not initialized correctly. Test will be invalid!");

                    using (new GlobalAdministratorContext())
                    {
                        if (tenant != null)
                        {
                            tenant.IsTenantDisabled = false;
                            tenant.Save();
                        }
                    }
                }
            }
        }
Esempio n. 29
0
        public void TestGetForm_DoesNotReturnCalculations()
        {
            var calcTestType = CodeNameResolver.GetTypeByName("AA_Calculations").As <EntityType>();
            var calcTestForm = calcTestType.DefaultEditForm;

            using (
                var request = new PlatformHttpRequest(string.Format(@"data/v1/form/{0}", calcTestForm.Id)))
            {
                HttpWebResponse response = request.GetResponse();

                // check that it worked (200)
                Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

                using (Stream stream = response.GetResponseStream())
                    using (TextReader reader = new StreamReader(stream))
                    {
                        string json = reader.ReadToEnd();
                        Assert.That(json, Contains.Substring("isCalculatedField"));
                        Assert.That(json, Is.Not.ContainsSubstring("fieldCalculation"));
                    }
            }
        }
Esempio n. 30
0
        public void GetEntityIdsByUpgradeIds()
        {
            // get three known entites
            var aliasEntity = Entity.Get(new EntityRef("alias"));
            var nameEntity  = Entity.Get(new EntityRef("name"));
            var descEntity  = Entity.Get(new EntityRef("description"));

            // store them locally to compare with later on
            IDictionary <Guid, long> refEntityDict = new Dictionary <Guid, long>();

            refEntityDict.Add(aliasEntity.UpgradeId, aliasEntity.Id);
            refEntityDict.Add(nameEntity.UpgradeId, nameEntity.Id);
            refEntityDict.Add(descEntity.UpgradeId, descEntity.Id);

            // guids to send in request
            var guids = new List <Guid>
            {
                aliasEntity.UpgradeId,
                nameEntity.UpgradeId,
                descEntity.UpgradeId
            };

            using (var request = new PlatformHttpRequest(@"data/v2/entity/getEntityIdsByUpgradeIds", PlatformHttpMethod.Post))
            {
                request.PopulateBody(guids);

                var response = request.GetResponse();

                // check that it worked (200)
                Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

                var resultsDict = request.DeserialiseResponseBody <IDictionary <string, long> >();

                Assert.AreEqual(3, resultsDict.Count, "resultsDict.Count");
                Assert.AreEqual(aliasEntity.Id, resultsDict[aliasEntity.UpgradeId.ToString("B")], "aliasEntity id does not match");
                Assert.AreEqual(nameEntity.Id, resultsDict [nameEntity.UpgradeId.ToString("B")], "nameEntity id does not match");
                Assert.AreEqual(descEntity.Id, resultsDict [descEntity.UpgradeId.ToString("B")], "descEntity id does not match");
            }
        }