public ScItem( ItemSource Source, string DisplayName, bool HasChildren, string Id, string LongId, string Path, string Template, Dictionary <string, ScField> FieldsByName) { this.Source = Source; this.DisplayName = DisplayName; this.HasChildren = HasChildren; this.Id = Id; this.LongId = LongId; this.Path = Path; this.Template = Template; this.FieldsByName = new Dictionary <string, IField>(); foreach (KeyValuePair <string, ScField> keyValuePair in FieldsByName) { this.FieldsByName.Add(keyValuePair.Key, (IField)keyValuePair.Value); } // this.FieldsByName = FieldsByName.ToDictionary(item => item.Key, item => (IField)item.Value); int fieldsCount = FieldsByName.Count; IField[] fields = new IField[fieldsCount]; this.FieldsByName.Values.CopyTo(fields, 0); this.Fields = fields; }
public void TestItemSourceDatabaseIsOptional() { var result = new ItemSource(null, "en", 1); Assert.IsNotNull(result); Assert.IsNull(result.Database); }
public ISitecoreWebApiSession BuildSession() { string optionalWebApiVersion = this.OptionalWebApiVersion(); string optionalMediaRoot = this.OptionalMediaRoot(); string optionalMediaExtension = this.OptionalMediaExtension(); string optionalMediaPrefix = this.OptionalMediaPrefix(); //////// SessionConfig conf = new SessionConfig( this.instanceUrl, this.site, optionalWebApiVersion); var mediaSettings = new MediaLibrarySettings( optionalMediaRoot, optionalMediaExtension, optionalMediaPrefix, this.resizingFlag); var itemSource = new ItemSource( this.itemSourceAccumulator.Database, this.itemSourceAccumulator.Language, this.itemSourceAccumulator.VersionNumber); var result = new ScApiSession(conf, this.credentials, mediaSettings, itemSource); return result; }
public void TestItemSourceLanguageIsOptional() { var result = new ItemSource("master", null, 1); Assert.IsNotNull(result); Assert.IsNull(result.Language); }
public ScApiSession( ISessionConfig config, IWebApiCredentials credentials, IMediaLibrarySettings mediaSettings, ItemSource defaultSource = null, HttpMessageHandler httpMessageHandler = null) { if (null == config) { throw new ArgumentNullException("ScApiSession.config cannot be null"); } this.sessionConfig = config.SessionConfigShallowCopy(); this.requestMerger = new UserRequestMerger(this.sessionConfig, defaultSource); if (null != credentials) { this.credentials = credentials.CredentialsShallowCopy(); } if (null != mediaSettings) { this.mediaSettings = mediaSettings.MediaSettingsShallowCopy(); } this.httpClient = httpMessageHandler == null ? new HttpClient() : new HttpClient(httpMessageHandler); }
public void TestUrlBuilderExcapesArgs() { ItemSource data = new ItemSource("{master}", "da???", 123); ItemSourceUrlBuilder builder = new ItemSourceUrlBuilder(RestServiceGrammar.ItemWebApiV2Grammar(), WebApiUrlParameters.ItemWebApiV2UrlParameters(), data); string expected = "sc_database=%7bmaster%7d&language=da%3f%3f%3f&sc_itemversion=123"; Assert.AreEqual(expected, builder.BuildUrlQueryString()); }
public void TestSerializationSupportsVersion() { ItemSource data = new ItemSource("master", "da", 100500); ItemSourceUrlBuilder builder = new ItemSourceUrlBuilder(RestServiceGrammar.ItemWebApiV2Grammar(), WebApiUrlParameters.ItemWebApiV2UrlParameters(), data); string expected = "sc_database=master&language=da&sc_itemversion=100500"; Assert.AreEqual(expected, builder.BuildUrlQueryString()); }
public ScTestApiSession( ISessionConfig config, IWebApiCredentials credentials, IMediaLibrarySettings mediaSettings, ItemSource defaultSource = null) : base(config, credentials, mediaSettings, defaultSource) { this.GetPublicKeyInvocationsCount = 0; }
public async void TestGetItemWithDefaultDbLanguageAndVersion() { var response = await this.GetItemByIdWithItemSource(LegacyConstants.DefaultSource()); const string Db = "web"; const string Language = "en"; const int Version = 2; testData.AssertItemsCount(1, response); var resultItem = response[0]; testData.AssertItemsAreEqual(testData.Items.ItemWithVersions, resultItem); var source = new ItemSource(Db, Language, Version); testData.AssertItemSourcesAreEqual(source, resultItem.Source); Assert.AreEqual("English version 2 web", resultItem["Title"].RawValue); }
public async void TestGetItemWithNotExistentLanguage() { const string Db = "web"; const string Language = "da"; var itemSource = new ItemSource(Db, Language, 1); using ( var session = this.CreateAdminSession(itemSource) ) { var response = await this.GetHomeItem(session); testData.AssertItemsCount(1, response); ISitecoreItem resultItem = response[0]; Assert.AreEqual(testData.Items.Home.Id, resultItem.Id); testData.AssertItemSourcesAreEqual(itemSource, resultItem.Source); Assert.AreEqual("", resultItem["Title"].RawValue); } }
public async void TestGetItemWithDbLanguageAndVersionFromSession() { const string Db = "web"; const string Language = "da"; const int Version = 1; var itemSource = new ItemSource(Db, Language, Version); var response = await this.GetItemByIdWithItemSource(itemSource); testData.AssertItemsCount(1, response); var resultItem = response[0]; testData.AssertItemsAreEqual(testData.Items.ItemWithVersions, resultItem); var source = new ItemSource(Db, Language, Version); testData.AssertItemSourcesAreEqual(source, resultItem.Source); Assert.AreEqual("Danish version 2 web", resultItem["Title"].RawValue); Assert.AreEqual(Db, resultItem.Source.Database); Assert.AreEqual(Version, resultItem.Source.VersionNumber.Value); Assert.AreEqual(Language, resultItem.Source.Language); }
private ISitecoreWebApiReadonlySession CreateAdminSession(ItemSource itemSource = null) { var builder = SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(testData.InstanceUrl) .Credentials(this.testData.Users.Admin); if (null != itemSource) { builder.DefaultDatabase(itemSource.Database).DefaultLanguage(itemSource.Language); } var session = builder.BuildReadonlySession(); return session; }
public async void TestOverrideDatabaseInRequestByPath() { const string Db = "master"; var requestBuilder = ItemWebApiRequestBuilder.ReadItemsRequestWithPath(testData.Items.ItemWithVersions.Path); var request = requestBuilder.Database(Db).Build(); var response = await sessionAuthenticatedUser.ReadItemAsync(request); testData.AssertItemsCount(1, response); var resultItem = response[0]; var expectedSource = new ItemSource(Db, LegacyConstants.DefaultSource().Language, 2); testData.AssertItemsAreEqual(testData.Items.ItemWithVersions, resultItem); testData.AssertItemSourcesAreEqual(expectedSource, resultItem.Source); }
public async void TestGetItemWithDbLanguageAndVersionFromRequest() { const string Db = "master"; const string Language = "da"; const int Version = 1; var request = ItemWebApiRequestBuilder.ReadItemsRequestWithId(testData.Items.ItemWithVersions.Id) .Database(Db) .Language(Language) .Version(Version) .Payload(PayloadType.Content) .Build(); var response = await sessionAuthenticatedUser.ReadItemAsync(request); testData.AssertItemsCount(1, response); var resultItem = response[0]; testData.AssertItemsAreEqual(testData.Items.ItemWithVersions, resultItem); var source = new ItemSource(Db, Language, Version); testData.AssertItemSourcesAreEqual(source, resultItem.Source); Assert.AreEqual("Danish version 1 master", resultItem["Title"].RawValue); }
private async Task<ScItemsResponse> GetItemByIdWithItemSource(ItemSource itemSource) { var session = SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(testData.InstanceUrl) .Credentials(testData.Users.Admin) .DefaultLanguage(itemSource.Language) .DefaultDatabase(itemSource.Database) .BuildReadonlySession(); IReadItemsByIdRequest request = null; if (null == itemSource.VersionNumber) { request = this.requestWithItemId; } else { request = ItemWebApiRequestBuilder.ReadItemsRequestWithId(testData.Items.ItemWithVersions.Id) .Payload(PayloadType.Content) .Version(itemSource.VersionNumber.Value) .Build(); } var response = await session.ReadItemAsync(request); return response; }
public async void TestGetItemByQueryWithCorrectField() { var requestBuilder = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery("/sitecore//*[@Title='English version 2 web']"); var request = requestBuilder.Payload(PayloadType.Content).Build(); var response = await sessionAuthenticatedUser.ReadItemAsync(request); testData.AssertItemsCount(1, response); var resultItem = response[0]; var expectedSource = new ItemSource(LegacyConstants.DefaultSource().Database, LegacyConstants.DefaultSource().Language, 2); testData.AssertItemsAreEqual(testData.Items.ItemWithVersions, resultItem); testData.AssertItemSourcesAreEqual(expectedSource, resultItem.Source); }
public async void TestOverrideLanguageInRequestByQuery() { const string Language = "da"; var requestBuilder = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery("/sitecore/content/Home/*"); var request = requestBuilder .Language(Language) .Build(); var response = await sessionAuthenticatedUser.ReadItemAsync(request); testData.AssertItemsCount(4, response); var resultItem = response[3]; var expectedSource = new ItemSource(LegacyConstants.DefaultSource().Database, Language, 1); testData.AssertItemSourcesAreEqual(expectedSource, resultItem.Source); }
public void TestItemVersionIsOptionalForItemSource() { var result = new ItemSource ("core", "da", null); Assert.IsNotNull(result); Assert.IsNull(result.VersionNumber); }
public async void TestGetItemWithInvalidLanguage() { const string Db = "web"; const string Language = "#%^^&"; var itemSource = new ItemSource(Db, Language); using ( var session = this.CreateAdminSession(itemSource) ) { var response = await session.ReadItemAsync(this.requestWithVersionsItemId); testData.AssertItemsCount(1, response); ISitecoreItem resultItem = response[0]; testData.AssertItemsAreEqual(testData.Items.ItemWithVersions, resultItem); var expectedSource = new ItemSource(Db, "en", 2); testData.AssertItemSourcesAreEqual(expectedSource, resultItem.Source); Assert.AreEqual("English version 2 web", resultItem["Title"].RawValue); } }
public void TestGetItemWithInvalidDbReturnsException() { const string Db = "@#er$#"; const string Language = "da"; var itemSource = new ItemSource(Db, Language); using ( var session = this.CreateAdminSession(itemSource) ) { TestDelegate testCode = async () => { var task = session.ReadItemAsync(this.requestWithVersionsItemId); await task; }; Exception 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("Could not find configuration node: databases/database[@id='" + Db + "']")); } }
public async void TestOverrideVersionAndDbInRequestById() { const string Db = "master"; const string Language = "en"; const int Version = 2; var source = new ItemSource("web", Language, 1); var session = SitecoreWebApiSessionBuilder.AuthenticatedSessionWithHost(testData.InstanceUrl) .Credentials(testData.Users.Admin) .DefaultDatabase(source.Database) .DefaultLanguage(source.Language) .BuildReadonlySession(); var request = ItemWebApiRequestBuilder.ReadItemsRequestWithId(testData.Items.ItemWithVersions.Id) .Version(Version) .Database(Db) .Payload(PayloadType.Content) .Build(); var response = await session.ReadItemAsync(request); testData.AssertItemsCount(1, response); var resultItem = response[0]; testData.AssertItemsAreEqual(testData.Items.ItemWithVersions, resultItem); var sourceExpected = new ItemSource(Db, Language, Version); testData.AssertItemSourcesAreEqual(sourceExpected, resultItem.Source); Assert.AreEqual("English version 2 master", resultItem["Title"].RawValue); }