public async void TestCreateItemByIdFromUnknownBranchCausesException() { await this.RemoveTestItemsFromMasterAndWebAsync(); const string ItemFromBranchName = "ITEM ID A default name of the branch should be used"; // const string itemFromBranchName = "Multiple item brunch"; var request = ItemWebApiRequestBuilder.CreateItemRequestWithParentId(this.testData.Items.CreateItemsHere.Id) .BranchId(NonExistingGuid) .ItemName(ItemFromBranchName) .Database("master") .Language("en") .Payload(PayloadType.Content) .Build(); var ex = Assert.Throws <ParserException>(async() => { await session.CreateItemAsync(request); }); Assert.AreEqual("Sitecore.MobileSDK.API.Exceptions.WebApiJsonErrorException", ex.InnerException.GetType().FullName); var castedException = ex.InnerException as WebApiJsonErrorException; Assert.AreEqual(500, castedException.Response.StatusCode); Assert.AreEqual("Template item not found.", castedException.Response.Message); }
public void TestGetMediaFromInvalidImageReturnsError() { var options = new MediaOptionsBuilder().Set .Height(100) .Build(); var request = ItemWebApiRequestBuilder.DownloadResourceRequestWithMediaPath("/sitecore/media library/Images/nexus") .DownloadOptions(options) .Build(); TestDelegate testCode = async() => { var task = this.session.DownloadMediaResourceAsync(request); await task; }; Exception exception = Assert.Throws <LoadDataFromNetworkException>(testCode); Assert.IsTrue(exception.Message.Contains("Unable to download data from the internet")); Assert.AreEqual("System.Net.Http.HttpRequestException", exception.InnerException.GetType().ToString()); // Windows : "Response status code does not indicate success: 404 (Not Found)" // iOS : "404 (Not Found)" Assert.IsTrue(exception.InnerException.Message.Contains("Not Found")); //@adk : fails because CMS 7.1u3 returns HTTP 500 instead of HTTP 404 // 500 Internal Server Error //Assert.IsTrue(exception.InnerException.Message.Contains("Internal Server Error")); }
public async void TestGetMediaItemWithMp4Extension() { const string ItemPath = "/sitecore/media library/Images/Files/Video_01"; const string MediaPath = "~/media/Images/Files/Video_01.mp4"; const string Db = "master"; var options = new MediaOptionsBuilder().Set .Height(50) .Build(); var request = ItemWebApiRequestBuilder.DownloadResourceRequestWithMediaPath(MediaPath) .DownloadOptions(options) .Database(Db) .Build(); using (var response = await this.session.DownloadMediaResourceAsync(request)) using (var ms = new MemoryStream()) { await response.CopyToAsync(ms); var expectedItem = await this.GetItemByPath(ItemPath, Db); Assert.AreEqual(expectedItem["size"].RawValue, ms.Length.ToString(CultureInfo.InvariantCulture)); } }
private async void SendDeleteByPathRequest() { try { using (var session = this.instanceSettings.GetSession()) { var request = ItemWebApiRequestBuilder.DeleteItemRequestWithPath(this.itemPathField.Text) .Build(); this.ShowLoader(); ScDeleteItemsResponse response = await session.DeleteItemAsync(request); this.ProceedResponce(response); } } catch (Exception e) { AlertHelper.ShowLocalizedAlertWithOkOption("Error", e.Message); } finally { BeginInvokeOnMainThread(delegate { this.HideLoader(); }); } }
public void TestGetMediaWithEmptyPathReturnsError() { TestDelegate testCode = () => ItemWebApiRequestBuilder.DownloadResourceRequestWithMediaPath(""); var exception = Assert.Throws <ArgumentException>(testCode); Assert.AreEqual("DownloadMediaResourceRequestBuilder.MediaPath : The input cannot be empty.", exception.Message); }
private async Task <ScItemsResponse> GetItemById(string id) { var request = ItemWebApiRequestBuilder.ReadItemsRequestWithId(id).Database("master").Build(); var response = await this.session.ReadItemAsync(request); return(response); }
private async void SendRequest() { try { using (ISitecoreWebApiSession session = this.instanceSettings.GetSession()) { var request = ItemWebApiRequestBuilder.RenderingHtmlRequestWithSourceAndRenderingId(sourceIdTextField.Text, renderingIdTextField.Text) .Build(); this.ShowLoader(); Stream response = await session.ReadRenderingHtmlAsync(request); response.Position = 0; string htmlText = ""; using (StreamReader reader = new StreamReader(response)) { htmlText = await reader.ReadToEndAsync(); } this.resultWebView.LoadHtmlString(htmlText, null); } } catch (Exception e) { AlertHelper.ShowLocalizedAlertWithOkOption("Error", e.Message); } finally { BeginInvokeOnMainThread(delegate { this.HideLoader(); }); } }
public void TestUpdateItemByNullPathReturnsException() { var exception = Assert.Throws <ArgumentNullException>(() => ItemWebApiRequestBuilder.UpdateItemRequestWithPath(null) .Build()); Assert.IsTrue(exception.Message.Contains("UpdateItemByPathRequestBuilder.ItemPath")); }
public void TestUpdateItemByInvalidPathReturnsException() { var exception = Assert.Throws <ArgumentException>(() => ItemWebApiRequestBuilder.UpdateItemRequestWithPath("invalid path)") .Build()); Assert.AreEqual("UpdateItemByPathRequestBuilder.ItemPath : should begin with '/'", exception.Message); }
public void TestUpdateItemByInvalidIdReturnsException() { var exception = Assert.Throws <ArgumentException>(() => ItemWebApiRequestBuilder.UpdateItemRequestWithId(testData.Items.Home.Path) .Build()); Assert.AreEqual("UpdateItemByIdRequestBuilder.ItemId : Item id must have curly braces '{}'", exception.Message); }
public void TestUpdateItemByEmptyIdReturnsException() { var exception = Assert.Throws <ArgumentException>(() => ItemWebApiRequestBuilder.UpdateItemRequestWithId("") .Build()); Assert.AreEqual("UpdateItemByIdRequestBuilder.ItemId : The input cannot be empty.", exception.Message); }
public async Task <ScItemsResponse> GetItemById(string itemId, PayloadType itemLoadType, List <ScopeType> itemScopeTypes, string itemLanguage = "en") { try { using (ISitecoreWebApiSession session = GetSession()) { IReadItemsByIdRequest request = ItemWebApiRequestBuilder.ReadItemsRequestWithId(itemId) .Payload(itemLoadType) .AddScope(itemScopeTypes) .Language(itemLanguage) .Build(); return(await session.ReadItemAsync(request)); } } catch (SitecoreMobileSdkException ex) { Log.Error("Error in GetItemById, id {0} . Error: {1}", itemId, ex.Message); throw ex; } catch (Exception ex) { Log.Error("Error in GetItemById, id {0} . Error: {1}", itemId, ex.Message); throw ex; } }
public void TestGetRenderingWithNullItemVersionReturnsException() { var exception = Assert.Throws <ArgumentNullException>(() => ItemWebApiRequestBuilder.RenderingHtmlRequestWithSourceAndRenderingId(DatasourceId, RenderingId) .SourceVersion(null)); Assert.True(exception.Message.Contains("SourceVersion")); }
public async void TestCreateItemByPathFromBranch() { await this.RemoveTestItemsFromMasterAndWebAsync(); const string ItemFromBranchName = "Multiple item branch"; TestEnvironment.Item expectedItem = this.CreateTestItem(ItemFromBranchName); var request = ItemWebApiRequestBuilder.CreateItemRequestWithParentPath(this.testData.Items.CreateItemsHere.Path) .BranchId("{14416817-CDED-45AF-99BF-2DE9883B7AC3}") .ItemName(ItemFromBranchName) .Database("master") .Language("en") .Payload(PayloadType.Content) .Build(); var createResponse = await session.CreateItemAsync(request); this.testData.AssertItemsCount(1, createResponse); ISitecoreItem resultItem = createResponse[0]; this.testData.AssertItemsAreEqual(expectedItem, resultItem); var readJustCreatedItemRequest = ItemWebApiRequestBuilder.ReadItemsRequestWithId(resultItem.Id) .Database("master") .Build(); var readJustCreatedItemResponse = await this.session.ReadItemAsync(readJustCreatedItemRequest); this.testData.AssertItemsCount(1, readJustCreatedItemResponse); this.testData.AssertItemsAreEqual(expectedItem, readJustCreatedItemResponse[0]); }
public async void TestCreateItemByIdWithInternationalNameAndFields() { await this.RemoveAll(); var expectedItem = this.CreateTestItem("International Слава Україні ウクライナへの栄光 عالمي"); const string CreatedTitle = "ఉక్రెయిన్ కు గ్లోరీ Ruhm für die Ukraine"; const string CreatedText = "युक्रेन गौरव גלורי לאוקראינה"; var request = ItemWebApiRequestBuilder.CreateItemRequestWithParentId(this.testData.Items.CreateItemsHere.Id) .ItemTemplatePath(testData.Items.Home.Template) .ItemName(expectedItem.DisplayName) .Database("master") .AddFieldsRawValuesByNameToSet("Title", CreatedTitle) .AddFieldsRawValuesByNameToSet("Text", CreatedText) .Payload(PayloadType.Content) .Build(); var createResponse = await session.CreateItemAsync(request); var resultItem = this.CheckCreatedItem(createResponse, expectedItem); Assert.AreEqual(CreatedTitle, resultItem["Title"].RawValue); Assert.AreEqual(CreatedText, resultItem["Text"].RawValue); this.GetAndCheckItem(expectedItem, resultItem); }
public void TestUpdateItemByPathWithSpacesOnlyReturnsException() { var exception = Assert.Throws <ArgumentException>(() => ItemWebApiRequestBuilder.UpdateItemRequestWithPath(" ") .Build()); Assert.AreEqual("UpdateItemByPathRequestBuilder.ItemPath : The input cannot be empty.", exception.Message); }
public void TestCreateItemWithEmptyOrNullFieldsReturnsException() { var exception = Assert.Throws <ArgumentNullException>(() => ItemWebApiRequestBuilder.CreateItemRequestWithParentId(this.testData.Items.CreateItemsHere.Id) .ItemTemplatePath("/Sample/Sample Item") .ItemName("SomeValidName") .AddFieldsRawValuesByNameToSet(null, "somevalue")); Assert.IsTrue(exception.Message.Contains("fieldName")); var exception1 = Assert.Throws <ArgumentException>(() => ItemWebApiRequestBuilder.CreateItemRequestWithParentId(this.testData.Items.CreateItemsHere.Id) .ItemTemplatePath("/Sample/Sample Item") .ItemName("SomeValidName") .AddFieldsRawValuesByNameToSet("", "somevalue")); Assert.AreEqual("CreateItemByIdRequestBuilder.fieldName : The input cannot be empty.", exception1.Message); var exception2 = Assert.Throws <ArgumentNullException>(() => ItemWebApiRequestBuilder.CreateItemRequestWithParentId(this.testData.Items.CreateItemsHere.Id) .ItemTemplatePath("/Sample/Sample Item") .ItemName("SomeValidName") .AddFieldsRawValuesByNameToSet("somekey", null)); Assert.IsTrue(exception2.Message.Contains("fieldValue")); var exception3 = Assert.Throws <ArgumentException>(() => ItemWebApiRequestBuilder.CreateItemRequestWithParentId(this.testData.Items.CreateItemsHere.Id) .ItemTemplatePath("/Sample/Sample Item") .ItemName("SomeValidName") .AddFieldsRawValuesByNameToSet("somekey", "")); Assert.AreEqual("CreateItemByIdRequestBuilder.fieldValue : The input cannot be empty.", exception3.Message); }
public void TestUpdateItemAsAnonymousFromShell() { const string FieldName = "Text"; var fieldValue = RandomText(); var itemSession = SitecoreWebApiSessionBuilder.AnonymousSessionWithHost(testData.InstanceUrl) .Site(testData.ShellSite) .DefaultDatabase("master") .BuildSession(); var request = ItemWebApiRequestBuilder.UpdateItemRequestWithPath(testData.Items.ItemWithVersions.Path) .AddFieldsRawValuesByNameToSet(FieldName, fieldValue) .Build(); TestDelegate testCode = async() => { var task = itemSession.UpdateItemAsync(request); await task; }; var exception = Assert.Throws <ParserException>(testCode); Assert.AreEqual("[Sitecore Mobile SDK] Data from the internet has unexpected format", exception.Message); Assert.AreEqual("Sitecore.MobileSDK.API.Exceptions.WebApiJsonErrorException", exception.InnerException.GetType().ToString()); Assert.AreEqual("Access to site is not granted.", exception.InnerException.Message); }
public async void TestCreateItemByIdWithOverridenDatabaseAndLanguageInRequest() { await this.RemoveAll(); const string Db = "web"; const string Language = "da"; var expectedItem = this.CreateTestItem("Create danish version in web from request"); var adminSession = SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(testData.InstanceUrl) .Credentials(testData.Users.Admin) .Site(testData.ShellSite) .DefaultDatabase("master") .DefaultLanguage("en") .BuildSession(); var request = ItemWebApiRequestBuilder.CreateItemRequestWithParentId(testData.Items.CreateItemsHere.Id) .ItemTemplatePath(expectedItem.Template) .ItemName(expectedItem.DisplayName) .Database(Db) .Language(Language) .Build(); var createResponse = await adminSession.CreateItemAsync(request); var resultItem = this.CheckCreatedItem(createResponse, expectedItem); Assert.AreEqual(Db, resultItem.Source.Database); Assert.AreEqual(Language, resultItem.Source.Language); }
public void TestUpdateItemAsUserWithoutWriteAccess() { const string FieldName = "Text"; var fieldValue = RandomText(); var itemSession = SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(testData.InstanceUrl) .Credentials(testData.Users.NoCreateAccess) .Site(testData.ShellSite) .DefaultDatabase("master") .BuildSession(); var request = ItemWebApiRequestBuilder.UpdateItemRequestWithPath(testData.Items.ItemWithVersions.Path) .AddFieldsRawValuesByNameToSet(FieldName, fieldValue) .Build(); TestDelegate testCode = async() => { var task = itemSession.UpdateItemAsync(request); await task; }; var exception = Assert.Throws <ParserException>(testCode); Assert.AreEqual("[Sitecore Mobile SDK] Data from the internet has unexpected format", exception.Message); Assert.AreEqual("Sitecore.MobileSDK.API.Exceptions.WebApiJsonErrorException", exception.InnerException.GetType().ToString()); Assert.True(exception.InnerException.Message.Contains("The current user does not have write access to this item")); }
public static async Task <ObservableCollection <WorkflowState> > GetWorkflowStatesInWorkflow(Workflow workflow) { var workflowStates = new ObservableCollection <WorkflowState> (); using (var session = CreateBaseSession().BuildSession()) { var request = ItemWebApiRequestBuilder .ReadItemsRequestWithId(workflow.Id) .AddScope(ScopeType.Children) .AddFieldsToRead("Final") .Build(); var results = await session.ReadItemAsync(request); foreach (var result in results) { //Don't add states that are considered the final state of the workflow bool isFinal = result["Final"].RawValue == "1" ? true : false; if (!isFinal) { workflowStates.Add(new WorkflowState(result)); } } } return(workflowStates); }
public async void TestUpdateDanishItemByPath() { await this.RemoveAll(); const string Language = "da"; var titleValue = RandomText(); var textValue = RandomText(); var itemSession = SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(testData.InstanceUrl) .Credentials(testData.Users.Admin) .Site(testData.ShellSite) .DefaultLanguage(Language) .DefaultDatabase("master") .BuildSession(); ISitecoreItem item = await this.CreateItem("Danish item to update", null, itemSession); var request = ItemWebApiRequestBuilder.UpdateItemRequestWithPath(item.Path) .AddFieldsRawValuesByNameToSet("Title", titleValue) .AddFieldsRawValuesByNameToSet("Text", textValue) .Language(Language) .Build(); var result = await this.session.UpdateItemAsync(request); Assert.AreEqual(1, result.ResultCount); var resultItem = result[0]; Assert.AreEqual(item.Id, resultItem.Id); Assert.AreEqual(titleValue, resultItem["Title"].RawValue); Assert.AreEqual(textValue, resultItem["Text"].RawValue); Assert.AreEqual(Language, resultItem.Source.Language); }
private async void PerformGetItemRequest(string query) { try { var request = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery(query).Build(); this.SetProgressBarIndeterminateVisibility(true); using (var session = this.Prefs.Session) { var response = await session.ReadItemAsync(request); if (response.ResultCount == 0) { DialogHelper.ShowSimpleDialog(this, Resource.String.text_item_received, Resource.String.text_no_item); } else { this.PopulateItemsList(response); } } this.SetProgressBarIndeterminateVisibility(false); } catch (Exception exception) { this.SetProgressBarIndeterminateVisibility(false); var title = this.GetString(Resource.String.text_error); DialogHelper.ShowSimpleDialog(this, title, exception.Message); } }
private async void DeleteItemByPath() { var itemPathField = this.FindViewById <EditText>(Resource.Id.field_item_path); var itempath = itemPathField.Text; if (string.IsNullOrWhiteSpace(itempath)) { Toast.MakeText(this, "Please enter item path", ToastLength.Long).Show(); return; } try { var request = ItemWebApiRequestBuilder.DeleteItemRequestWithPath(itempath).Build(); this.SetProgressBarIndeterminateVisibility(true); using (var session = this.prefs.Session) { var response = await session.DeleteItemAsync(request); this.SetProgressBarIndeterminateVisibility(false); this.ShowResult(response); } } catch (System.Exception exception) { this.SetProgressBarIndeterminateVisibility(false); var title = this.GetString(Resource.String.text_error); DialogHelper.ShowSimpleDialog(this, title, exception.Message); } }
public void TestGetMediaWithNullPathReturnsError() { TestDelegate testCode = () => ItemWebApiRequestBuilder.DownloadResourceRequestWithMediaPath(null); var exception = Assert.Throws <ArgumentNullException>(testCode); Assert.IsTrue(exception.Message.Contains("DownloadMediaResourceRequestBuilder.MediaPath")); }
public void TestCorrectParamsForParentId() { Stream stream = this.GenerateFakeStream(); IMediaResourceUploadRequest request = ItemWebApiRequestBuilder.UploadResourceRequestWithParentId("{BC1BAE61-ADC6-4B37-B36E-01059B26CF84}") .ContentType("image/jpg") .ItemName("name1") .FileName("bugaga.jpg") .ItemTemplatePath("System/Media/Unversioned/Image") .ItemDataStream(stream) .Build(); IMediaResourceUploadRequest autocompletedRequest = this.requestMerger.FillUploadMediaGaps(request); string result = this.builder.GetUrlForRequest(autocompletedRequest); string expected = "http://mobiledev1ua1.dk.sitecore.net:7119/" + "-/item/v234%2f" + "sitecore%2fshell" + "?" + "sc_database=web&" + "name=name1&" + "template=System%2fMedia%2fUnversioned%2fImage&" + "sc_itemid=%7BBC1BAE61-ADC6-4B37-B36E-01059B26CF84%7D"; Assert.AreEqual(expected, result); }
public async void TestMediaWithoutAccessToFolder() { const string MediaPath = "/sitecore/media library/Images/kirkorov"; var sessionNoReadAccess = SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(this.testData.InstanceUrl) .Credentials(this.testData.Users.NoReadUserExtranet) .BuildReadonlySession(); var options = new MediaOptionsBuilder().Set .Scale(1) .Build(); var request = ItemWebApiRequestBuilder.DownloadResourceRequestWithMediaPath(MediaPath) .DownloadOptions(options) .Build(); using (var response = await sessionNoReadAccess.DownloadMediaResourceAsync(request)) using (var ms = new MemoryStream()) { await response.CopyToAsync(ms); var expectedItem = await this.GetItemByPath(MediaPath); Assert.AreEqual(expectedItem["size"].RawValue, ms.Length.ToString(CultureInfo.InvariantCulture)); } }
public async void TestCreateItemByPathWithSpecifiedFields() { await this.RemoveAll(); var expectedItem = this.CreateTestItem("Create with fields"); const string CreatedTitle = "Created title"; const string CreatedText = "Created text"; var request = ItemWebApiRequestBuilder.CreateItemRequestWithParentPath(this.testData.Items.CreateItemsHere.Path) .ItemTemplatePath(testData.Items.Home.Template) .ItemName(expectedItem.DisplayName) .Database("master") .AddFieldsRawValuesByNameToSet("Title", CreatedTitle) .AddFieldsRawValuesByNameToSet("Text", CreatedText) .AddFieldsToRead("Text", "Title") .Build(); var createResponse = await session.CreateItemAsync(request); var resultItem = this.CheckCreatedItem(createResponse, expectedItem); Assert.AreEqual(CreatedTitle, resultItem["Title"].RawValue); Assert.AreEqual(CreatedText, resultItem["Text"].RawValue); this.GetAndCheckItem(expectedItem, resultItem); }
public async void TestMediaFromSrcAndMediapathInField() { var z = await this.GetMediaFieldAsStringArray("/sitecore/content/Home/Test fields"); // z[5]: src="~/media/4F20B519D5654472B01891CB6103C667.ashx" var requestWithSrcParameter = ItemWebApiRequestBuilder.DownloadResourceRequestWithMediaPath(z[5]) .Build(); using (var responseWithSrcParameter = await this.session.DownloadMediaResourceAsync(requestWithSrcParameter)) using (var msWithSrcParameter = new MemoryStream()) { await responseWithSrcParameter.CopyToAsync(msWithSrcParameter); // z[3]: mediapath="/Images/test image" var requestWithMediapathParameter = ItemWebApiRequestBuilder.DownloadResourceRequestWithMediaPath(z[3]) .Build(); using (var responseWithMediapathParameter = await this.session.DownloadMediaResourceAsync(requestWithMediapathParameter)) using (var msWithMediapathParameter = new MemoryStream()) { await responseWithMediapathParameter.CopyToAsync(msWithMediapathParameter); Assert.AreEqual(msWithSrcParameter, msWithMediapathParameter); } } }
public void TestFieldsAppending() { Dictionary <string, string> fields = new Dictionary <string, string>(); fields.Add("field1", "VaLuE1"); fields.Add("field2", "VaLuE2"); IUpdateItemByIdRequest request = ItemWebApiRequestBuilder.UpdateItemRequestWithId("{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}") .Database("db") .Language("lg") .Payload(PayloadType.Full) .AddFieldsRawValuesByNameToSet(fields) .AddFieldsRawValuesByNameToSet("field3", "VaLuE3") .Build(); IUpdateItemByIdRequest autocompletedRequest = this.requestMerger.FillUpdateItemByIdGaps(request); string result = this.builder.GetUrlForRequest(autocompletedRequest); string expected = "http://mobiledev1ua1.dk.sitecore.net:7119/-/item/v234%2fsitecore%2fshell" + "?sc_database=db" + "&language=lg" + "&payload=full" + "&sc_itemid=%7b110d559f-dea5-42ea-9c1c-8a5df7e70ef9%7d"; string fieldsResult = this.builder.GetFieldValuesList(autocompletedRequest); string expectedFieldsResult = "field1=VaLuE1&field2=VaLuE2&field3=VaLuE3"; Assert.AreEqual(expected, result); Assert.AreEqual(expectedFieldsResult, fieldsResult); }