public object Get(CommunitySearchRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView); context.Open(); context.LogInfo(this, string.Format("/community/search GET")); CommunityCollection domains = new CommunityCollection(context); domains.UserStatus = Request.QueryString != null ? Request.QueryString["status"] : null; domains.SetFilter("Kind", (int)DomainKind.Public + "," + (int)DomainKind.Private + "," + (int)DomainKind.Hidden); // Load the complete request HttpRequest httpRequest = HttpContext.Current.Request; OpenSearchEngine ose = MasterCatalogue.OpenSearchEngine; Type responseType = OpenSearchFactory.ResolveTypeFromRequest(httpRequest.QueryString, httpRequest.Headers, ose); // the opensearch cache system uses the query parameters // we add to the parameters the filters added to the load in order to avoir wrong cache // we use 't2-' in order to not interfer with possibly used query parameters var qs = new NameValueCollection(Request.QueryString); foreach (var filter in domains.FilterValues) { qs.Add("t2-" + filter.Key.FieldName, filter.Value.ToString()); } IOpenSearchResultCollection osr = ose.Query(domains, httpRequest.QueryString, responseType); OpenSearchFactory.ReplaceOpenSearchDescriptionLinks(domains, osr); context.Close(); return(new HttpResult(osr.SerializeToString(), osr.ContentType)); }
public void SearchAllCommunities() { var ose = MasterCatalogue.OpenSearchEngine; var parameters = new NameValueCollection(); context.AccessLevel = EntityAccessLevel.Privilege; var usr1 = User.FromUsername(context, "testusr1"); var usr2 = User.FromUsername(context, "testusr2"); var usr3 = User.FromUsername(context, "testusr3"); try { context.StartImpersonation(usr1.Id); var communities = new CommunityCollection(context); communities.Identifier = "community"; communities.OpenSearchEngine = ose; //communities.UserId = usr1.Id; var osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC, osr.TotalResults); parameters.Set("q", "public"); osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC, osr.TotalResults); parameters.Set("q", "public*"); osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC, osr.TotalResults); parameters.Set("q", "*"); osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC, osr.TotalResults); parameters.Remove("q"); parameters.Set("status", "joined"); communities.UserStatus = ThematicCommunity.USERSTATUS_JOINED; osr = ose.Query(communities, parameters); Assert.AreEqual(0, osr.TotalResults); context.EndImpersonation(); context.StartImpersonation(usr2.Id); communities.UserId = usr2.Id; osr = ose.Query(communities, parameters); Assert.AreEqual(4, osr.TotalResults); context.EndImpersonation(); context.StartImpersonation(usr3.Id); ThematicCommunity community = ThematicCommunity.FromIdentifier(context, "community-public-1"); community.TryJoinCurrentUser(); var roles = Role.GetUserRolesForDomain(context, usr3.Id, community.Id); //user part of community Assert.AreEqual(1, roles.Length); Assert.AreEqual(RoleTep.MEMBER, roles[0].Name); communities.UserId = usr3.Id; osr = ose.Query(communities, parameters); Assert.AreEqual(1, osr.TotalResults); context.EndImpersonation(); communities.UserId = usr3.Id; osr = ose.Query(communities, parameters); Assert.AreEqual(1, osr.TotalResults); } catch (Exception e) { context.EndImpersonation(); Assert.Fail(e.Message); } }
public void JoinPrivateCommunity() { context.AccessLevel = EntityAccessLevel.Privilege; var usr1 = User.FromUsername(context, "testusr1"); var usr2 = User.FromUsername(context, "testusr2"); var ose = MasterCatalogue.OpenSearchEngine; var parameters = new NameValueCollection(); try { context.StartImpersonation(usr1.Id); ThematicCommunity community = ThematicCommunity.FromIdentifier(context, "community-private-1"); Role role = Role.FromIdentifier(context, RoleTep.MEMBER); //check how many communities user can see var communities = new CommunityCollection(context); communities.Identifier = "community"; communities.OpenSearchEngine = ose; IOpenSearchResultCollection osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC, osr.TotalResults); context.EndImpersonation(); context.StartImpersonation(usr2.Id); //add user in community community.SetUserAsTemporaryMember(usr1); Assert.True(community.IsUserPending(usr1.Id)); context.EndImpersonation(); context.StartImpersonation(usr1.Id); //check how many communities user can see communities = new CommunityCollection(context); communities.Identifier = "community"; communities.OpenSearchEngine = ose; osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC + 1, osr.TotalResults); //check visibility is private + pending var items = osr.Items; bool isprivate = false, isVisibilityPending = false, ispublic = false; foreach (var item in items) { if (item.Title.Text == "community-private-1") { foreach (var cat in item.Categories) { if (cat.Name == "visibility") { if (cat.Label == "hidden") { isprivate = true; } else if (cat.Label == "public") { ispublic = true; } } else if (cat.Name == "status" && cat.Label == "pending") { isVisibilityPending = true; } } } } Assert.True(isprivate); Assert.True(isVisibilityPending); Assert.False(ispublic); //usr1 validates community.TryJoinCurrentUser(); Assert.True(community.IsUserPending(usr1.Id)); //check how many communities user can see communities = new CommunityCollection(context); communities.Identifier = "community"; communities.OpenSearchEngine = ose; osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC + 1, osr.TotalResults); //remove from community community.RemoveUser(usr1); //check how many communities user can see communities = new CommunityCollection(context); communities.Identifier = "community"; communities.OpenSearchEngine = ose; osr = ose.Query(communities, parameters); Assert.AreEqual(NBCOMMUNITY_PUBLIC, osr.TotalResults); } catch (Exception e) { Assert.Fail(e.Message); } finally { context.EndImpersonation(); } }