Add apiBasic suite with default accounts_hash_difficulty
This commit is contained in:
+19
-14
@@ -96,8 +96,10 @@ def getCoreApiTestPipelineNames():
|
|||||||
def getDependsOnAllTestPipelines(ctx):
|
def getDependsOnAllTestPipelines(ctx):
|
||||||
dependencies = getTestSuiteNames() + [
|
dependencies = getTestSuiteNames() + [
|
||||||
'upload-coverage',
|
'upload-coverage',
|
||||||
'localApiTests-owncloud-storage',
|
'localApiTests-apiOcisSpecific-owncloud',
|
||||||
'localApiTests-ocis-storage',
|
'localApiTests-apiOcisSpecific-ocis',
|
||||||
|
'localApiTests-apiBasic-owncloud',
|
||||||
|
'localApiTests-apiBasic-ocis',
|
||||||
] + getCoreApiTestPipelineNames() + getUITestSuiteNames() + ['accountsUITests']
|
] + getCoreApiTestPipelineNames() + getUITestSuiteNames() + ['accountsUITests']
|
||||||
|
|
||||||
return dependencies
|
return dependencies
|
||||||
@@ -148,8 +150,10 @@ def testPipelines(ctx):
|
|||||||
|
|
||||||
pipelines += [
|
pipelines += [
|
||||||
uploadCoverage(ctx),
|
uploadCoverage(ctx),
|
||||||
localApiTests(ctx, config['apiTests']['coreBranch'], config['apiTests']['coreCommit'], 'owncloud'),
|
localApiTests(ctx, config['apiTests']['coreBranch'], config['apiTests']['coreCommit'], 'owncloud', 'apiOcisSpecific'),
|
||||||
localApiTests(ctx, config['apiTests']['coreBranch'], config['apiTests']['coreCommit'], 'ocis')
|
localApiTests(ctx, config['apiTests']['coreBranch'], config['apiTests']['coreCommit'], 'ocis', 'apiOcisSpecific'),
|
||||||
|
localApiTests(ctx, config['apiTests']['coreBranch'], config['apiTests']['coreCommit'], 'owncloud', 'apiBasic', 'default'),
|
||||||
|
localApiTests(ctx, config['apiTests']['coreBranch'], config['apiTests']['coreCommit'], 'ocis', 'apiBasic', 'default')
|
||||||
]
|
]
|
||||||
|
|
||||||
for runPart in range(1, config['apiTests']['numberOfParts'] + 1):
|
for runPart in range(1, config['apiTests']['numberOfParts'] + 1):
|
||||||
@@ -336,11 +340,11 @@ def uploadCoverage(ctx):
|
|||||||
'depends_on': getTestSuiteNames(),
|
'depends_on': getTestSuiteNames(),
|
||||||
}
|
}
|
||||||
|
|
||||||
def localApiTests(ctx, coreBranch = 'master', coreCommit = '', storage = 'owncloud'):
|
def localApiTests(ctx, coreBranch = 'master', coreCommit = '', storage = 'owncloud', suite = 'apiOcisSpecific', accounts_hash_difficulty = 4):
|
||||||
return {
|
return {
|
||||||
'kind': 'pipeline',
|
'kind': 'pipeline',
|
||||||
'type': 'docker',
|
'type': 'docker',
|
||||||
'name': 'localApiTests-%s-storage' % (storage),
|
'name': 'localApiTests-%s-%s' % (suite, storage),
|
||||||
'platform': {
|
'platform': {
|
||||||
'os': 'linux',
|
'os': 'linux',
|
||||||
'arch': 'amd64',
|
'arch': 'amd64',
|
||||||
@@ -348,10 +352,10 @@ def localApiTests(ctx, coreBranch = 'master', coreCommit = '', storage = 'ownclo
|
|||||||
'steps':
|
'steps':
|
||||||
generate('ocis') +
|
generate('ocis') +
|
||||||
build() +
|
build() +
|
||||||
ocisServer(storage) +
|
ocisServer(storage, accounts_hash_difficulty) +
|
||||||
cloneCoreRepos(coreBranch, coreCommit) + [
|
cloneCoreRepos(coreBranch, coreCommit) + [
|
||||||
{
|
{
|
||||||
'name': 'localApiTests-%s-storage' % (storage),
|
'name': 'localApiTests-%s-%s' % (suite, storage),
|
||||||
'image': 'owncloudci/php:7.4',
|
'image': 'owncloudci/php:7.4',
|
||||||
'pull': 'always',
|
'pull': 'always',
|
||||||
'environment' : {
|
'environment' : {
|
||||||
@@ -361,6 +365,7 @@ def localApiTests(ctx, coreBranch = 'master', coreCommit = '', storage = 'ownclo
|
|||||||
'SKELETON_DIR': '/srv/app/tmp/testing/data/apiSkeleton',
|
'SKELETON_DIR': '/srv/app/tmp/testing/data/apiSkeleton',
|
||||||
'OCIS_SKELETON_STRATEGY': '%s' % ('copy' if storage == 'owncloud' else 'upload'),
|
'OCIS_SKELETON_STRATEGY': '%s' % ('copy' if storage == 'owncloud' else 'upload'),
|
||||||
'TEST_OCIS':'true',
|
'TEST_OCIS':'true',
|
||||||
|
'BEHAT_SUITE': suite,
|
||||||
'BEHAT_FILTER_TAGS': '~@skipOnOcis-%s-Storage' % ('OC' if storage == 'owncloud' else 'OCIS'),
|
'BEHAT_FILTER_TAGS': '~@skipOnOcis-%s-Storage' % ('OC' if storage == 'owncloud' else 'OCIS'),
|
||||||
'PATH_TO_CORE': '/srv/app/testrunner',
|
'PATH_TO_CORE': '/srv/app/testrunner',
|
||||||
},
|
},
|
||||||
@@ -391,7 +396,7 @@ def localApiTests(ctx, coreBranch = 'master', coreCommit = '', storage = 'ownclo
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
def coreApiTests(ctx, coreBranch = 'master', coreCommit = '', part_number = 1, number_of_parts = 1, storage = 'owncloud'):
|
def coreApiTests(ctx, coreBranch = 'master', coreCommit = '', part_number = 1, number_of_parts = 1, storage = 'owncloud', accounts_hash_difficulty = 4):
|
||||||
return {
|
return {
|
||||||
'kind': 'pipeline',
|
'kind': 'pipeline',
|
||||||
'type': 'docker',
|
'type': 'docker',
|
||||||
@@ -403,7 +408,7 @@ def coreApiTests(ctx, coreBranch = 'master', coreCommit = '', part_number = 1, n
|
|||||||
'steps':
|
'steps':
|
||||||
generate('ocis') +
|
generate('ocis') +
|
||||||
build() +
|
build() +
|
||||||
ocisServer(storage) +
|
ocisServer(storage, accounts_hash_difficulty) +
|
||||||
cloneCoreRepos(coreBranch, coreCommit) + [
|
cloneCoreRepos(coreBranch, coreCommit) + [
|
||||||
{
|
{
|
||||||
'name': 'oC10ApiTests-%s-storage-%s' % (storage, part_number),
|
'name': 'oC10ApiTests-%s-storage-%s' % (storage, part_number),
|
||||||
@@ -452,7 +457,7 @@ def uiTests(ctx, phoenixBranch, phoenixCommit):
|
|||||||
suiteNames = getUITestSuiteNames()
|
suiteNames = getUITestSuiteNames()
|
||||||
return [uiTestPipeline(suiteName, phoenixBranch, phoenixCommit) for suiteName in suiteNames]
|
return [uiTestPipeline(suiteName, phoenixBranch, phoenixCommit) for suiteName in suiteNames]
|
||||||
|
|
||||||
def uiTestPipeline(suiteName, phoenixBranch = 'master', phoenixCommit = '', storage = 'owncloud'):
|
def uiTestPipeline(suiteName, phoenixBranch = 'master', phoenixCommit = '', storage = 'owncloud', accounts_hash_difficulty = 4):
|
||||||
suites = getUITestSuites()
|
suites = getUITestSuites()
|
||||||
paths = ""
|
paths = ""
|
||||||
for path in suites[suiteName]:
|
for path in suites[suiteName]:
|
||||||
@@ -469,7 +474,7 @@ def uiTestPipeline(suiteName, phoenixBranch = 'master', phoenixCommit = '', stor
|
|||||||
'steps':
|
'steps':
|
||||||
generate('ocis') +
|
generate('ocis') +
|
||||||
build() +
|
build() +
|
||||||
ocisServer(storage) + [
|
ocisServer(storage, accounts_hash_difficulty) + [
|
||||||
{
|
{
|
||||||
'name': 'webUITests',
|
'name': 'webUITests',
|
||||||
'image': 'owncloudci/nodejs:11',
|
'image': 'owncloudci/nodejs:11',
|
||||||
@@ -529,7 +534,7 @@ def uiTestPipeline(suiteName, phoenixBranch = 'master', phoenixCommit = '', stor
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
def accountsUITests(ctx, phoenixBranch, phoenixCommit, storage = 'owncloud'):
|
def accountsUITests(ctx, phoenixBranch, phoenixCommit, storage = 'owncloud', accounts_hash_difficulty = 4):
|
||||||
return {
|
return {
|
||||||
'kind': 'pipeline',
|
'kind': 'pipeline',
|
||||||
'type': 'docker',
|
'type': 'docker',
|
||||||
@@ -541,7 +546,7 @@ def accountsUITests(ctx, phoenixBranch, phoenixCommit, storage = 'owncloud'):
|
|||||||
'steps':
|
'steps':
|
||||||
generate('ocis') +
|
generate('ocis') +
|
||||||
build() +
|
build() +
|
||||||
ocisServer(storage) + [
|
ocisServer(storage, accounts_hash_difficulty) + [
|
||||||
{
|
{
|
||||||
'name': 'WebUIAcceptanceTests',
|
'name': 'WebUIAcceptanceTests',
|
||||||
'image': 'owncloudci/nodejs:11',
|
'image': 'owncloudci/nodejs:11',
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ default:
|
|||||||
'': '%paths.base%/../features/bootstrap'
|
'': '%paths.base%/../features/bootstrap'
|
||||||
|
|
||||||
suites:
|
suites:
|
||||||
apiOcisSpecific:
|
apiBasic:
|
||||||
paths:
|
paths:
|
||||||
- '%paths.base%/../features/apiOcisSpecific'
|
- '%paths.base%/../features/apiBasic'
|
||||||
context: &common_ldap_suite_context
|
context: &common_ldap_suite_context
|
||||||
parameters:
|
parameters:
|
||||||
ldapAdminPassword: admin
|
ldapAdminPassword: admin
|
||||||
@@ -29,6 +29,22 @@ default:
|
|||||||
- TrashbinContext:
|
- TrashbinContext:
|
||||||
- WebDavPropertiesContext:
|
- WebDavPropertiesContext:
|
||||||
|
|
||||||
|
apiOcisSpecific:
|
||||||
|
paths:
|
||||||
|
- '%paths.base%/../features/apiOcisSpecific'
|
||||||
|
context: *common_ldap_suite_context
|
||||||
|
contexts:
|
||||||
|
- RevaContext:
|
||||||
|
- OccContext:
|
||||||
|
- FeatureContext: *common_feature_context_params
|
||||||
|
- CapabilitiesContext:
|
||||||
|
- ChecksumContext:
|
||||||
|
- FavoritesContext:
|
||||||
|
- FilesVersionsContext:
|
||||||
|
- PublicWebDavContext:
|
||||||
|
- TrashbinContext:
|
||||||
|
- WebDavPropertiesContext:
|
||||||
|
|
||||||
extensions:
|
extensions:
|
||||||
jarnaiz\JUnitFormatter\JUnitFormatterExtension:
|
jarnaiz\JUnitFormatter\JUnitFormatterExtension:
|
||||||
filename: report.xml
|
filename: report.xml
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
@api @provisioning_api-app-required @skipOnLDAP
|
||||||
|
Feature: add user
|
||||||
|
As an admin
|
||||||
|
I want to be able to add users
|
||||||
|
So that I can give people controlled individual access to resources on the ownCloud server
|
||||||
|
|
||||||
|
Scenario Outline: admin creates a user
|
||||||
|
Given using OCS API version "<ocs_api_version>"
|
||||||
|
And user "brand-new-user" has been deleted
|
||||||
|
When the administrator sends a user creation request for user "brand-new-user" password "%alt1%" using the provisioning API
|
||||||
|
Then the OCS status code should be "<ocs_status_code>"
|
||||||
|
And the HTTP status code should be "200"
|
||||||
|
And user "brand-new-user" should exist
|
||||||
|
And user "brand-new-user" should be able to access a skeleton file
|
||||||
|
Examples:
|
||||||
|
| ocs_api_version | ocs_status_code |
|
||||||
|
| 1 | 100 |
|
||||||
|
| 2 | 200 |
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
@api @files_sharing-app-required
|
||||||
|
Feature: sharing
|
||||||
|
|
||||||
|
Scenario Outline: Creating a share of a file with a user
|
||||||
|
Given the administrator has set the default folder for received shares to "Shares"
|
||||||
|
And auto-accept shares has been disabled
|
||||||
|
And using OCS API version "<ocs_api_version>"
|
||||||
|
And user "Alice" has been created with default attributes and without skeleton files
|
||||||
|
And user "Alice" has uploaded file with content "ownCloud test text file 0" to "/textfile0.txt"
|
||||||
|
And user "Brian" has been created with default attributes and without skeleton files
|
||||||
|
When user "Alice" shares file "textfile0.txt" with user "Brian" using the sharing API
|
||||||
|
And user "Brian" accepts share "/textfile0.txt" offered by user "Alice" using the sharing API
|
||||||
|
Then the HTTP status code should be "200"
|
||||||
|
And the content of file "/Shares/textfile0.txt" for user "Brian" should be "ownCloud test text file 0"
|
||||||
|
Examples:
|
||||||
|
| ocs_api_version |
|
||||||
|
| 1 |
|
||||||
|
| 2 |
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
@api
|
||||||
|
Feature: upload file
|
||||||
|
As a user
|
||||||
|
I want to be able to upload files
|
||||||
|
So that I can store and share files between multiple client systems
|
||||||
|
|
||||||
|
Scenario Outline: upload a file and check download content
|
||||||
|
Given using OCS API version "<ocs_api_version>"
|
||||||
|
And user "Alice" has been created with default attributes and without skeleton files
|
||||||
|
And using <dav_version> DAV path
|
||||||
|
When user "Alice" uploads file with content "uploaded content" to "/upload.txt" using the WebDAV API
|
||||||
|
Then the content of file "/upload.txt" for user "Alice" should be "uploaded content"
|
||||||
|
Examples:
|
||||||
|
| ocs_api_version | dav_version |
|
||||||
|
| 1 | old |
|
||||||
|
| 1 | new |
|
||||||
|
| 2 | old |
|
||||||
|
| 2 | new |
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
@api
|
||||||
|
Feature: attempt to PUT files with invalid password
|
||||||
|
|
||||||
|
Background:
|
||||||
|
Given user "Alice" has been created with default attributes and without skeleton files
|
||||||
|
And user "Alice" has created folder "/PARENT"
|
||||||
|
|
||||||
|
Scenario: send PUT requests to webDav endpoints as normal user with wrong password
|
||||||
|
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "invalid" about user "Alice"
|
||||||
|
| endpoint |
|
||||||
|
| /remote.php/webdav/textfile0.txt |
|
||||||
|
| /remote.php/dav/files/%username%/textfile0.txt |
|
||||||
|
| /remote.php/webdav/PARENT |
|
||||||
|
| /remote.php/dav/files/%username%/PARENT |
|
||||||
|
| /remote.php/dav/files/%username%/PARENT/parent.txt |
|
||||||
|
Then the HTTP status code of responses on all endpoints should be "401"
|
||||||
|
|
||||||
|
Scenario: send PUT requests to webDav endpoints as normal user with no password
|
||||||
|
When user "Alice" requests these endpoints with "PUT" including body "doesnotmatter" using password "" about user "Alice"
|
||||||
|
| endpoint |
|
||||||
|
| /remote.php/webdav/textfile0.txt |
|
||||||
|
| /remote.php/dav/files/%username%/textfile0.txt |
|
||||||
|
| /remote.php/webdav/PARENT |
|
||||||
|
| /remote.php/dav/files/%username%/PARENT |
|
||||||
|
| /remote.php/dav/files/%username%/PARENT/parent.txt |
|
||||||
|
Then the HTTP status code of responses on all endpoints should be "401"
|
||||||
Reference in New Issue
Block a user