# SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors # SPDX-FileCopyrightText: 2016 ownCloud, Inc. # SPDX-License-Identifier: AGPL-3.0-only Feature: sharees Background: Given using api version "1" And user "test" exists And user "Sharee1" exists And group "ShareeGroup" exists And user "test" belongs to group "ShareeGroup" Scenario: Search without exact match Given As an "test" When getting sharees for | search | Sharee | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned are | Sharee1 | 0 | Sharee1 | And "exact groups" sharees returned is empty And "groups" sharees returned are | ShareeGroup | 1 | ShareeGroup | And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search without exact match not-exact casing Given As an "test" When getting sharees for | search | sharee | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned are | Sharee1 | 0 | Sharee1 | And "exact groups" sharees returned is empty And "groups" sharees returned are | ShareeGroup | 1 | ShareeGroup | And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search only with group members - denied Given As an "test" And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes" When getting sharees for | search | sharee | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned is empty And "exact groups" sharees returned is empty And "groups" sharees returned are | ShareeGroup | 1 | ShareeGroup | And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search only with group members - allowed Given As an "test" And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes" And user "Sharee1" belongs to group "ShareeGroup" When getting sharees for | search | sharee | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned are | Sharee1 | 0 | Sharee1 | And "exact groups" sharees returned is empty And "groups" sharees returned are | ShareeGroup | 1 | ShareeGroup | And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search only with group members - allowed with exact match Given As an "test" And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes" And user "Sharee1" belongs to group "ShareeGroup" When getting sharees for | search | Sharee1 | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned are | Sharee1 | 0 | Sharee1 | And "users" sharees returned is empty And "exact groups" sharees returned is empty And "groups" sharees returned is empty And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search only with group members - no group as non-member Given As an "Sharee1" And parameter "shareapi_only_share_with_group_members" of app "core" is set to "yes" When getting sharees for | search | sharee | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned is empty And "exact groups" sharees returned is empty And "groups" sharees returned is empty And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search without exact match no iteration allowed Given As an "test" And parameter "shareapi_allow_share_dialog_user_enumeration" of app "core" is set to "no" When getting sharees for | search | Sharee | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned is empty And "exact groups" sharees returned is empty And "groups" sharees returned is empty And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search with exact match no iteration allowed Given As an "test" And parameter "shareapi_allow_share_dialog_user_enumeration" of app "core" is set to "no" When getting sharees for | search | Sharee1 | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned are | Sharee1 | 0 | Sharee1 | And "users" sharees returned is empty And "exact groups" sharees returned is empty And "groups" sharees returned is empty And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search with exact match group no iteration allowed Given As an "test" And parameter "shareapi_allow_share_dialog_user_enumeration" of app "core" is set to "no" When getting sharees for | search | ShareeGroup | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned is empty And "exact groups" sharees returned are | ShareeGroup | 1 | ShareeGroup | And "groups" sharees returned is empty And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty Scenario: Search with exact match Given As an "test" When getting sharees for | search | Sharee1 | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" Then "exact users" sharees returned are | Sharee1 | 0 | Sharee1 | Then "users" sharees returned is empty Then "exact groups" sharees returned is empty Then "groups" sharees returned is empty Then "exact remotes" sharees returned is empty Then "remotes" sharees returned is empty Scenario: Search with exact match not-exact casing Given As an "test" When getting sharees for | search | sharee1 | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" Then "exact users" sharees returned are | Sharee1 | 0 | Sharee1 | Then "users" sharees returned is empty Then "exact groups" sharees returned is empty Then "groups" sharees returned is empty Then "exact remotes" sharees returned is empty Then "remotes" sharees returned is empty Scenario: Search with exact match not-exact casing group Given As an "test" When getting sharees for | search | shareegroup | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" Then "exact users" sharees returned is empty Then "users" sharees returned is empty Then "exact groups" sharees returned are | ShareeGroup | 1 | ShareeGroup | Then "groups" sharees returned is empty Then "exact remotes" sharees returned is empty Then "remotes" sharees returned is empty Scenario: Search with "self" Given As an "Sharee1" When getting sharees for | search | Sharee1 | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" Then "exact users" sharees returned are | Sharee1 | 0 | Sharee1 | Then "users" sharees returned is empty Then "exact groups" sharees returned is empty Then "groups" sharees returned is empty Then "exact remotes" sharees returned is empty Then "remotes" sharees returned is empty Scenario: Remote sharee for files Given As an "test" When getting sharees for | search | test@localhost | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" Then "exact users" sharees returned is empty Then "users" sharees returned is empty Then "exact groups" sharees returned is empty Then "groups" sharees returned is empty Then "exact remotes" sharees returned are | test (localhost) | 6 | test@localhost | Then "remotes" sharees returned is empty Scenario: Remote sharee for calendars not allowed Given As an "test" When getting sharees for | search | test@localhost | | itemType | calendar | Then the OCS status code should be "100" And the HTTP status code should be "200" Then "exact users" sharees returned is empty Then "users" sharees returned is empty Then "exact groups" sharees returned is empty Then "groups" sharees returned is empty Then "exact remotes" sharees returned is empty Then "remotes" sharees returned is empty Scenario: Group sharees not returned when group sharing is disabled Given As an "test" And parameter "shareapi_allow_group_sharing" of app "core" is set to "no" When getting sharees for | search | sharee | | itemType | file | Then the OCS status code should be "100" And the HTTP status code should be "200" And "exact users" sharees returned is empty And "users" sharees returned are | Sharee1 | 0 | Sharee1 | And "exact groups" sharees returned is empty And "groups" sharees returned is empty And "exact remotes" sharees returned is empty And "remotes" sharees returned is empty