Parametrización de los parámetros de conexión a la base de datos declarados en behat.yml y enviados mediante los features.

This commit is contained in:
veronicaaruquipa
2014-12-08 09:11:13 -04:00
parent 274e865060
commit d502648664
6 changed files with 543 additions and 587 deletions

View File

@@ -2,5 +2,36 @@
default:
context:
parameters:
base_url: http://192.168.11.181/api/1.0/michelangelo/
access_token: cd5cff9b2e3ebabf49e276e47e977fab5988c00e
base_url: http://michelangelo-be.colosa.net/api/1.0/michelangelo/
access_token: e79057f4276661bedb6154eed3834f6cbd738853
client_id: x-pm-local-client
client_secret: 179ad45c6ce2cb97cf1029e212046e81
#uploadFilesFolder: /opt/uploadfiles
#cd5cff9b2e3ebabf49e276e47e977fab5988c00e
login_url: http://michelangelo-be.colosa.net/sysmichelangelo/en/neoclassic/login/login
authentication_url: http://michelangelo-be.colosa.net/sysmichelangelo/en/neoclassic/login/authentication.php
oauth_app_url: http://michelangelo-be.colosa.net/sysmichelangelo/en/neoclassic/oauth2/clientSetupAjax
oauth_authorization_url: http://michelangelo-be.colosa.net/michelangelo/oauth2/authorize
user_name: admin
user_password: sample123*
# Database connection parameters
# To Mysql
mys_db_type: mysql
mys_db_server: michelangelo-be.colosa.net
mys_db_name: michelangelo
mys_db_username: root
mys_db_password:
mys_db_port: 3306
mys_db_encode: utf8
mys_db_description: Mysql connection
# To SQL Server
sqlsrv_db_type: mssql
sqlsrv_db_server: 192.168.11.99
sqlsrv_db_name: wf_michelangelo
sqlsrv_db_username: sa
sqlsrv_db_password: mafe12345
sqlsrv_db_port: 1433
sqlsrv_db_encode: utf8
sqlsrv_db_description: Microsoft SQL Server connection

View File

@@ -9,25 +9,30 @@ Feature: DataBase Connections
And the response has 0 record
Scenario: Create a new database connection
Scenario Outline: Create a new database connection
Given that I have a valid access_token
And POST this data:
"""
{
"dbs_type": "mysql",
"dbs_server": "michelangelo-be.colosa.net",
"dbs_database_name": "test",
"dbs_username": "testuser",
"dbs_password": "sample",
"dbs_port": 3306,
"dbs_encode": "utf8",
"dbs_description": "conection correcta"
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
"dbs_database_name": "<dbs_database_name>",
"dbs_username": "<dbs_username>",
"dbs_password": "<dbs_password>",
"dbs_port": <dbs_port>,
"dbs_encode": "<dbs_encode>",
"dbs_description": "<dbs_description>"
}
"""
And I request "project/74737540052e1641ab88249082085472/database-connection"
Then the response status code should be 201
And store "dbs_uid" in session array
Examples:
| dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | <mys_db_description> |
@3: TEST FOR GET DATABASE CONNECTIONS /----------------------------------------------------------------------
Scenario: List all the database connections (result 1 database connection)
Given that I have a valid access_token
@@ -37,19 +42,19 @@ Feature: DataBase Connections
And the response has 1 record
@4: TEST FOR PUT DATABASE CONNECTION /-----------------------------------------------------------------------
Scenario: Update a database connection
Scenario Outline: Update a database connection
Given that I have a valid access_token
And PUT this data:
"""
{
"dbs_type": "mysql",
"dbs_server": "michelangelo-be.colosa.net",
"dbs_database_name": "test",
"dbs_username": "testuser",
"dbs_password": "sample",
"dbs_port": 3306,
"dbs_encode": "utf8",
"dbs_description": "conection correcta a workflow"
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
"dbs_database_name": "<dbs_database_name>",
"dbs_username": "<dbs_username>",
"dbs_password": "<dbs_password>",
"dbs_port": <dbs_port>,
"dbs_encode": "<dbs_encode>",
"dbs_description": "<dbs_description>"
}
"""
And that I want to update a resource with the key "dbs_uid" stored in session array
@@ -58,6 +63,10 @@ Feature: DataBase Connections
And the response charset is "UTF-8"
And the type is "object"
Examples:
| dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | <mys_db_description> |
Scenario: Get a database connection (with change in "dbs_description" and "dbs_database_name")
Given that I have a valid access_token

View File

@@ -1,29 +1,34 @@
@ProcessMakerMichelangelo @RestAPI
Feature: DataBase Connections Main Tests MySQL
Feature: DataBase Connections Main Tests Mysql
Requirements:
a workspace with the process 74737540052e1641ab88249082085472 ("Data Base Connenctions") already loaded
and workspace with the project 87648819953a85c0abc01d3080475981 ("testExecutionOfDerivationScreen") already loaded
there are zero Database Connections in the process
A workspace with previous creation of process with ID=74737540052e1641ab88249082085472 ("Data Base Connections") already loaded
and workspace with the project 87648819953a85c0abc01d3080475981 ("testExecutionOfDerivationScreen") already loaded
there are zero Database Connections in the processes.
Background:
Background:
Given that I have a valid access_token
Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections
Given I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
Examples:
# GET /api/1.0/{workspace}/project/<project-id>/database-connections
# Get list DataBase Connections
Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections
Given I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
| test_description | project | record |
| List DB in the process Data Base Connenctions .pm | 74737540052e1641ab88249082085472 | 0 |
| List DB in the process testExecutionOfDerivationScreen .pmx | 87648819953a85c0abc01d3080475981 | 0 |
Examples:
| project | record |
| 74737540052e1641ab88249082085472 | 1 |
| 87648819953a85c0abc01d3080475981 | 1 |
Scenario Outline: Test database connection to test
Given POST this data:
"""
# POST /api/1.0/{workspace}/project/<project-id>/database-connection/test
# Test DataBase Connection
Scenario Outline: Test database connection to test
Given POST this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
@@ -35,138 +40,13 @@ Feature: DataBase Connections Main Tests MySQL
"dbs_description": "<dbs_description>"
}
"""
And I request "project/<project>/database-connection/test"
Then if database-connection with id "<dbs_uid_number>" is active
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And I request "project/<project>/database-connection/test"
Then database-connection with id "<dbs_uid_number>" is active
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Test SQL Server db connection .pm | 1 | 74737540052e1641ab88249082085472 | microsoft sql server | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
| Test SQL Server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | microsoft sql server | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
Scenario Outline: Create a new database connection
Given database-connection with id "<dbs_uid_number>" is active
And POST this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
"dbs_database_name": "<dbs_database_name>",
"dbs_username": "<dbs_username>",
"dbs_password": "<dbs_password>",
"dbs_port": <dbs_port>,
"dbs_encode": "<dbs_encode>",
"dbs_description": "<dbs_description>"
}
"""
And I request "project/<project>/database-connection"
Then the response status code should be 201
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "object"
And store "dbs_uid" in session array as variable "dbs_uid_<dbs_uid_number>"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Create SQL Server db connection .pm | 1 | 74737540052e1641ab88249082085472 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
| Create SQL Server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
Scenario Outline: Get the DataBase Connections List when there are exactly one DataBase Connections in each process
Given database-connection with id "<dbs_uid_number>" is active
And I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
Examples:
| test_description | project | record | dbs_uid_number |
| List DB in the process Data Base Connenctions .pm | 74737540052e1641ab88249082085472 | 1 | 1 |
| List DB in the process testExecutionOfDerivationScreen .pmx | 87648819953a85c0abc01d3080475981 | 1 | 2 |
Scenario Outline: Update a database connection
Given database-connection with id "<dbs_uid_number>" is active
And PUT this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
"dbs_database_name": "<dbs_database_name>",
"dbs_username": "<dbs_username>",
"dbs_password": "<dbs_password>",
"dbs_port": <dbs_port>,
"dbs_encode": "<dbs_encode>",
"dbs_description": "<dbs_description>"
}
"""
And that I want to update a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Update sql server db connection .pm | 1 | 74737540052e1641ab88249082085472 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
| Update sql server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
Scenario Outline: Get a single database connection and check some properties
Given database-connection with id "<dbs_uid_number>" is active
And that I want to get a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that "dbs_type" is set to "<dbs_type>"
And that "dbs_server" is set to "<dbs_server>"
And that "dbs_database_name" is set to "<dbs_database_name>"
And that "dbs_username" is set to "<dbs_username>"
And that "dbs_password" is set to "<dbs_password>"
And that "dbs_port" is set to "<dbs_port>"
And that "dbs_encode" is set to "<dbs_encode>"
And that "dbs_description" is set to "<dbs_description>"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Update sql server db connection .pm | 1 | 74737540052e1641ab88249082085472 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
| Update sql server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
Scenario Outline: Delete all Database Connection created previously in this script
Given database-connection with id "<dbs_uid_number>" is active
And that I want to delete a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
Examples:
| project | dbs_uid_number |
| 74737540052e1641ab88249082085472 | 1 |
| 87648819953a85c0abc01d3080475981 | 2 |
Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections
Given database-connection with id "<dbs_uid_number>" is active
And I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
Examples:
| test_description | project | record | dbs_uid_number |
| List DB in the process Data Base Connenctions .pm | 74737540052e1641ab88249082085472 | 0 | 1 |
| List DB in the process testExecutionOfDerivationScreen .pmx | 87648819953a85c0abc01d3080475981 | 0 | 2 |
Examples:
| dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| 46110938554821d2ddb8d01076533986 | 74737540052e1641ab88249082085472 | <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | <mys_db_description> |
| 40639901154821d2e3bb7e8061116901 | 87648819953a85c0abc01d3080475981 | <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | <mys_db_description> |

View File

@@ -1,29 +1,33 @@
@ProcessMakerMichelangelo @RestAPI
Feature: DataBase Connections Main Tests SQL Server
Requirements:
a workspace with the process 74737540052e1641ab88249082085472 ("Data Base Connenctions") already loaded
and workspace with the project 87648819953a85c0abc01d3080475981 ("testExecutionOfDerivationScreen") already loaded
there are zero Database Connections in the processes
A workspace with previous creation of process with ID=74737540052e1641ab88249082085472 ("Data Base Connections") already loaded
and workspace with the project 87648819953a85c0abc01d3080475981 ("testExecutionOfDerivationScreen") already loaded
there are zero Database Connections in the processes.
Background:
Background:
Given that I have a valid access_token
Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections
Given I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
Examples:
# GET /api/1.0/{workspace}/project/<project-id>/database-connections
# Get list DataBase Connections
Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections
Given I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
| test_description | project | record |
| List DB in the process Data Base Connenctions .pm | 74737540052e1641ab88249082085472 | 0 |
| List DB in the process testExecutionOfDerivationScreen .pmx | 87648819953a85c0abc01d3080475981 | 0 |
Examples:
| project | record |
| 106912358530c9b14ac15d3001790900 | 0 |
| 1265557095225ff5c688f46031700471 | 0 |
Scenario Outline: Test database connection to test
Given POST this data:
"""
# POST /api/1.0/{workspace}/project/<project-id>/database-connection/test
# Test DataBase Connection
Scenario Outline: Test database connection to test
Given POST this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
@@ -35,23 +39,24 @@ Feature: DataBase Connections Main Tests SQL Server
"dbs_description": "<dbs_description>"
}
"""
And I request "project/<project>/database-connection/test"
Then if database-connection with id "<dbs_uid_number>" is active
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
And I request "project/<project>/database-connection/test"
Then if database-connection with id "<dbs_uid_number>" is active
Then the response status code should be 200
And the response charset is "UTF-8"
And the content type is "application/json"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Test SQL Server db connection .pm | 1 | 74737540052e1641ab88249082085472 | microsoft sql server | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
| Test SQL Server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | microsoft sql server | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
Examples:
| dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| 1 | 106912358530c9b14ac15d3001790900 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
| 2 | 1265557095225ff5c688f46031700471 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
Scenario Outline: Create a new database connection
Given database-connection with id "<dbs_uid_number>" is active
And POST this data:
"""
# POST /api/1.0/{workspace}/project/<project-id>/database-connection
# Create new DataBase Connection
Scenario Outline: Create a new database connection
Given database-connection with id "<dbs_uid_number>" is active
And POST this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
@@ -63,38 +68,40 @@ Feature: DataBase Connections Main Tests SQL Server
"dbs_description": "<dbs_description>"
}
"""
And I request "project/<project>/database-connection"
Then the response status code should be 201
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "object"
And store "dbs_uid" in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 201
And the response charset is "UTF-8"
And the content type is "application/json"
And the type is "object"
And store "dbs_uid" in session array as variable "dbs_uid_<dbs_uid_number>"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Create SQL Server db connection .pm | 1 | 74737540052e1641ab88249082085472 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
| Create SQL Server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | SQL Server connection |
Examples:
| dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| 1 | 106912358530c9b14ac15d3001790900 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
| 2 | 1265557095225ff5c688f46031700471 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
Scenario Outline: Get the DataBase Connections List when there are exactly one DataBase Connections in each process
Given database-connection with id "<dbs_uid_number>" is active
And I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
# GET /api/1.0/{workspace}/project/<project-id>/database-connection
# Get DataBase Connections list of each process
Scenario Outline: Get the DataBase Connections List when there are exactly one DataBase Connections in each process
Given database-connection with id "<dbs_uid_number>" is active
And I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
Examples:
| test_description | project | record | dbs_uid_number |
| List DB in the process Data Base Connenctions .pm | 74737540052e1641ab88249082085472 | 1 | 1 |
| List DB in the process testExecutionOfDerivationScreen .pmx | 87648819953a85c0abc01d3080475981 | 1 | 2 |
Examples:
| project | record | dbs_uid_number |
| 106912358530c9b14ac15d3001790900 | 1 | 1 |
| 1265557095225ff5c688f46031700471 | 1 | 2 |
Scenario Outline: Update a database connection
Given database-connection with id "<dbs_uid_number>" is active
And PUT this data:
"""
# PUT /api/1.0/{workspace}/project/<project-id>/database-connection
# Update a DataBase Connection
Scenario Outline: Update a database connection
Given database-connection with id "<dbs_uid_number>" is active
And PUT this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
@@ -106,66 +113,68 @@ Feature: DataBase Connections Main Tests SQL Server
"dbs_description": "<dbs_description>"
}
"""
And that I want to update a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that I want to update a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Update sql server db connection .pm | 1 | 74737540052e1641ab88249082085472 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
| Update sql server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
Examples:
| dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| 1 | 106912358530c9b14ac15d3001790900 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
| 2 | 1265557095225ff5c688f46031700471 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
Scenario Outline: Get a single database connection and check some properties
Given database-connection with id "<dbs_uid_number>" is active
And that I want to get a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that "dbs_type" is set to "<dbs_type>"
And that "dbs_server" is set to "<dbs_server>"
And that "dbs_database_name" is set to "<dbs_database_name>"
And that "dbs_username" is set to "<dbs_username>"
And that "dbs_password" is set to "<dbs_password>"
And that "dbs_port" is set to "<dbs_port>"
And that "dbs_encode" is set to "<dbs_encode>"
And that "dbs_description" is set to "<dbs_description>"
# GET /api/1.0/{workspace}/project/<project-id>/database-connection
# Get a single DataBase Connection and their properties
Scenario Outline: Get a single database connection and check some properties
Given database-connection with id "<dbs_uid_number>" is active
And that I want to get a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
And that "dbs_type" is set to "<dbs_type>"
And that "dbs_server" is set to "<dbs_server>"
And that "dbs_database_name" is set to "<dbs_database_name>"
And that "dbs_username" is set to "<dbs_username>"
And that "dbs_password" is set to "<dbs_password>"
And that "dbs_port" is set to "<dbs_port>"
And that "dbs_encode" is set to "<dbs_encode>"
And that "dbs_description" is set to "<dbs_description>"
Examples:
| test_description | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| Update sql server db connection .pm | 1 | 74737540052e1641ab88249082085472 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
| Update sql server db connection .pmx | 2 | 87648819953a85c0abc01d3080475981 | mssql | 192.168.11.99 | wf_michelangelo | sa | mafe12345 | 1433 | utf8 | update SQL Server connection |
Examples:
| dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| 1 | 106912358530c9b14ac15d3001790900 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
| 2 | 1265557095225ff5c688f46031700471 | <sqlsrv_db_type> | <sqlsrv_db_server> | <sqlsrv_db_name> | <sqlsrv_db_username> | <sqlsrv_db_password> | <sqlsrv_db_port> | <sqlsrv_db_encode> | <sqlsrv_db_description> |
Scenario Outline: Delete all Database Connection created previously in this script
Given database-connection with id "<dbs_uid_number>" is active
And that I want to delete a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
# DELETE /api/1.0/{workspace}/project/<project-id>/database-connection
# Delete all DataBase Connections created in this script
Scenario Outline: Delete all Database Connection created in this script
Given database-connection with id "<dbs_uid_number>" is active
And that I want to delete a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_<dbs_uid_number>"
And I request "project/<project>/database-connection"
Then the response status code should be 200
And the response charset is "UTF-8"
And the type is "object"
Examples:
| project | dbs_uid_number |
| 74737540052e1641ab88249082085472 | 1 |
| 87648819953a85c0abc01d3080475981 | 2 |
Examples:
| project | dbs_uid_number |
| 106912358530c9b14ac15d3001790900 | 1 |
| 1265557095225ff5c688f46031700471 | 2 |
Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections
Given database-connection with id "<dbs_uid_number>" is active
And I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
# GET /api/1.0/{workspace}/project/<project-id>/database-connection
# Get DataBase Connections list
Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections
Given database-connection with id "<dbs_uid_number>" is active
And I request "project/<project>/database-connections"
Then the response status code should be 200
And the response charset is "UTF-8"
And the response has <record> record
Examples:
| test_description | project | record | dbs_uid_number |
| List DB in the process Data Base Connenctions .pm | 74737540052e1641ab88249082085472 | 0 | 1 |
| List DB in the process testExecutionOfDerivationScreen .pmx | 87648819953a85c0abc01d3080475981 | 0 | 2 |
Examples:
| project | record | dbs_uid_number |
| 106912358530c9b14ac15d3001790900 | 0 | 1 |
| 1265557095225ff5c688f46031700471 | 0 | 2 |

View File

@@ -5,8 +5,8 @@ Feature: DataBase Connections Negative Tests
Given that I have a valid access_token
Scenario Outline: Test database connection to test
Given POST this data:
"""
Given POST this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
@@ -18,35 +18,38 @@ Feature: DataBase Connections Negative Tests
"dbs_description": "<dbs_description>"
}
"""
And I request "project/<project>/database-connection"
Then the response status code should be <error_code>
And the response status message should have the following text "<error_message>"
And I request "project/<project>/database-connection"
Then the response status code should be <error_code>
And the response status message should have the following text "<error_message>"
Examples:
| test_description | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description | error_code | error_message |
| Field required dbs_type | 74737540052e1641ab88249082085472 | | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | mysql connection | 400 | dbs_type |
| Field required dbs_server | 74737540052e1641ab88249082085472 | <mys_db_type> | | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | mysql connection | 400 | dbs_server |
| Field required dbs_database_name | 74737540052e1641ab88249082085472 | <mys_db_type> | <mys_db_server> | | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | mysql connection | 400 | dbs_database_name |
| Field required dbs_encode | 74737540052e1641ab88249082085472 | <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | | mysql connection | 400 | dbs_encode |
| Field required project | | <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | mysql connection | 400 | prj_uid |
Examples:
| test_description | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_encode | dbs_description | error_code | error_message |
| Field required dbs_type | 74737540052e1641ab88249082085472 | | michelangelo-be.colosa.net | test | testuser | sample | utf8 | mysql connection | 400 | dbs_type |
| Field required dbs_server | 74737540052e1641ab88249082085472 | mysql | | test | testuser | sample | utf8 | mysql connection | 400 | dbs_server |
| Field required dbs_database_name | 74737540052e1641ab88249082085472 | mysql | michelangelo-be.colosa.net | | testuser | sample | utf8 | mysql connection | 400 | dbs_database_name |
| Field required dbs_encode | 74737540052e1641ab88249082085472 | mysql | michelangelo-be.colosa.net | test | testuser | sample | | mysql connection | 400 | dbs_encode |
| Field required project | | mysql | michelangelo-be.colosa.net | test | testuser | sample | utf8 | mysql connection | 400 | prj_uid |
Scenario: Test database connection to test with parameter wrong port
Given POST this data:
"""
{
"dbs_type": "mysql",
"dbs_server": "michelangelo-be.colosa.net",
"dbs_database_name": "test",
"dbs_username": "testuser",
"dbs_password": "sample",
"dbs_port": 10000,
"dbs_encode": "utf8",
"dbs_description": "mysql connection"
Scenario Outline: Test database connection to test with parameter wrong port
Given POST this data:
"""
{
"dbs_type": "<dbs_type>",
"dbs_server": "<dbs_server>",
"dbs_database_name": "<dbs_database_name>",
"dbs_username": "<dbs_username>",
"dbs_password": "<dbs_password>",
"dbs_port": <dbs_port>,
"dbs_encode": "<dbs_encode>",
"dbs_description": "<dbs_description>"
}
"""
And I request "project/74737540052e1641ab88249082085472/database-connection"
Then the response status code should be 400
And the response status message should have the following text "port"
And I request "project/74737540052e1641ab88249082085472/database-connection"
Then the response status code should be 400
And the response status message should have the following text "port"
Examples:
| dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description |
| <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | <mys_db_description> |
| <mys_db_type> | <mys_db_server> | <mys_db_name> | <mys_db_username> | <mys_db_password> | <mys_db_port> | <mys_db_encode> | <mys_db_description> |

View File

@@ -19,7 +19,6 @@ global $config;
class RestContext extends BehatContext
{
private $_startTime = null;
private $_restObject = null;
private $_headers = array();
@@ -56,16 +55,16 @@ class RestContext extends BehatContext
$this->_client
->getEventDispatcher()
->addListener('request.error',
function (\Guzzle\Common\Event $event) {
switch ($event['response']->getStatusCode()) {
case 400:
case 401:
case 404:
case 405:
case 406:
$event->stopPropagation();
}
});
function (\Guzzle\Common\Event $event) {
switch ($event['response']->getStatusCode()) {
case 400:
case 401:
case 404:
case 405:
case 406:
$event->stopPropagation();
}
});
$timezone = ini_get('date.timezone');
if (empty($timezone)) {
date_default_timezone_set('UTC');
@@ -316,11 +315,12 @@ class RestContext extends BehatContext
$this->_headers['Content-Type'] = 'application/json; charset=utf-8';
$this->_requestBody = json_encode(
is_object($this->_restObject)
? (array)$this->_restObject
: $this->_restObject
? (array)$this->_restObject
: $this->_restObject
);
}
// BACKGROUND STEPS
/**
* @Given /^that I have a valid access_token$/
*/
@@ -382,8 +382,8 @@ class RestContext extends BehatContext
: $this->_restObject;
$this->_request = $this->_client
->post($url, $this->_headers,
(empty($this->_requestBody) ? $postFields :
$this->_requestBody));
(empty($this->_requestBody) ? $postFields :
$this->_requestBody));
$this->_response = $this->_request->send();
break;
case 'PUT' :
@@ -397,8 +397,8 @@ class RestContext extends BehatContext
$this->printDebug("URL F: $url\n");
$this->_request = $this->_client
->put($url, $this->_headers,
(empty($this->_requestBody) ? $putFields :
$this->_requestBody));
(empty($this->_requestBody) ? $putFields :
$this->_requestBody));
$this->_response = $this->_request->send();
break;
case 'PATCH' :
@@ -407,8 +407,8 @@ class RestContext extends BehatContext
: $this->_restObject;
$this->_request = $this->_client
->patch($url, $this->_headers,
(empty($this->_requestBody) ? $putFields :
$this->_requestBody));
(empty($this->_requestBody) ? $putFields :
$this->_requestBody));
$this->_response = $this->_request->send();
break;
case 'DELETE':
@@ -946,7 +946,7 @@ class RestContext extends BehatContext
public function theResponseStatusCodeShouldBe($httpStatus)
{
if(!(isset($this->_response))){
throw new \Exception('HTTP code does not match ' . $httpStatus .
throw new \Exception('HTTP code does not match ' . $httpStatus .
' (actual: No response defined)'
);
}
@@ -998,6 +998,19 @@ class RestContext extends BehatContext
*/
public function postThisData(PyStringNode $string)
{
/*
* Overwrite the $this->_requestBody = $string; line in order to replace line by line with test data.
* */
$linesValues = array();
foreach ($string->getLines() as $line) {
foreach ($this->_parameters as $param => $value) {
$line = str_replace('<'.$param.'>', $value, $line);
}
$linesValues[] = $line;
}
$string->setLines($linesValues);
$this->_restObjectMethod = 'post';
$this->_headers['Content-Type'] = 'application/json; charset=UTF-8';
$this->_requestBody = $string;
@@ -1008,6 +1021,19 @@ class RestContext extends BehatContext
*/
public function putThisData(PyStringNode $string)
{
/*
* Overwrite the $this->_requestBody = $string; line in order to replace line by line with test data.
* */
$linesValues = array();
foreach ($string->getLines() as $line) {
foreach ($this->_parameters as $param => $value) {
$line = str_replace('<'.$param.'>', $value, $line);
}
$linesValues[] = $line;
}
$string->setLines($linesValues);
$this->_restObjectMethod = 'put';
$this->_headers['Content-Type'] = 'application/json; charset=UTF-8';
$this->_requestBody = $string;
@@ -1016,7 +1042,7 @@ class RestContext extends BehatContext
/**
/**
* @Given /^I want to Insert a new "([^"]*)" with:$/
*/
public function iWantToInsertANewWith($url, PyStringNode $string)
@@ -1084,49 +1110,49 @@ class RestContext extends BehatContext
//*********** WEN
/**
* @Given /^POST data from file "([^"]*)"$/
*/
* @Given /^POST data from file "([^"]*)"$/
*/
public function postDataFromFile($jsonFile)
{
$filePath = __DIR__ . "/../json/" . $jsonFile;
$filePath = __DIR__ . "/../json/" . $jsonFile;
if(file_exists($filePath))
{
$fileData = file_get_contents($filePath);
$this->postThisData(new PyStringNode($fileData));
}
else
{
throw new \Exception("JSON File: $filePath not found\n\n" );
}
// throw new PendingException();
if(file_exists($filePath))
{
$fileData = file_get_contents($filePath);
$this->postThisData(new PyStringNode($fileData));
}
else
{
throw new \Exception("JSON File: $filePath not found\n\n" );
}
// throw new PendingException();
}
/**
* @Given /^PUT data from file "([^"]*)"$/
*/
* @Given /^PUT data from file "([^"]*)"$/
*/
public function putDataFromFile($jsonFile)
{
$filePath = __DIR__ . "/../json/" . $jsonFile;
$filePath = __DIR__ . "/../json/" . $jsonFile;
if(file_exists($filePath))
{
$fileData = file_get_contents($filePath);
$this->putThisData(new PyStringNode($fileData));
}
else
{
throw new \Exception("JSON File: $filePath not found\n\n" );
}
// throw new PendingException();
if(file_exists($filePath))
{
$fileData = file_get_contents($filePath);
$this->putThisData(new PyStringNode($fileData));
}
else
{
throw new \Exception("JSON File: $filePath not found\n\n" );
}
// throw new PendingException();
}
/**
* @Given /^This scenario is not implemented yet$/
* @Given /^this scenario is not implemented yet$/
*/
* @Given /^This scenario is not implemented yet$/
* @Given /^this scenario is not implemented yet$/
*/
public function thisScenarioIsNotImplementedYet()
{
throw new PendingException();
throw new PendingException();
}
/**
@@ -1187,13 +1213,13 @@ class RestContext extends BehatContext
$this->_restObjectMethod = 'put';
}
/**
/**
* @Given /^that I want to get a resource with the key "([^"]*)" stored in session array as variable "([^"]*)"$/
* @Given /^that I want to get a resource with the key "([^"]*)" stored in session array as variable "([^"]*)" in position (\d+)$/
*/
public function thatIWantToGetAResourceWithTheKeyStoredInSessionArrayAsVariable($varName, $sessionVarName, $position=null)
{
if (file_exists("session.data")) {
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = array();
@@ -1244,7 +1270,7 @@ class RestContext extends BehatContext
$this->_restObjectMethod = 'delete';
}
/**
/**
* @Given /^the response status message should have the following text "([^"]*)"$/
*/
public function theResponseStatusMessageShouldHaveTheFollowingText($arg1)
@@ -1288,7 +1314,7 @@ class RestContext extends BehatContext
}
/**
/**
* @Given /^I request "([^"]*)" with the key "([^"]*)" stored in session array as variable "([^"]*)"$/
* @Given /^I request "([^"]*)" with the key "([^"]*)" stored in session array as variable "([^"]*)" and url is "([^"]*)"$/
* @Given /^I request "([^"]*)" with the key "([^"]*)" stored in session array as variable "([^"]*)"$/
@@ -1349,7 +1375,7 @@ class RestContext extends BehatContext
}
/**
/**
* @Given /^the property "([^"]*)" of "([^"]*)" is set to "([^"]*)"$/
*/
public function thePropertyOfIsSetTo($propertyName, $objName, $propertyValue)
@@ -1400,8 +1426,8 @@ class RestContext extends BehatContext
//UPLOAD FILE MANAGER
/**
* @Given /^POST I want to upload the file "([^"]*)" to path "([^"]*)". Url "([^"]*)"$/
*/
* @Given /^POST I want to upload the file "([^"]*)" to path "([^"]*)". Url "([^"]*)"$/
*/
public function postIWantToUploadTheFileToPathPublicUrl($prfFile, $prfPath, $url)
{
$prfFile = $this->getParameter('uploadFilesFolder') . $prfFile;
@@ -1433,14 +1459,14 @@ class RestContext extends BehatContext
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$postResult = curl_exec($ch);
curl_close($ch);
}
}
}
//UPLOAD IMAGE
/**
* @Given /^POST I want to upload the image "([^"]*)" to user "([^"]*)". Url "([^"]*)"$/
*/
* @Given /^POST I want to upload the image "([^"]*)" to user "([^"]*)". Url "([^"]*)"$/
*/
public function postIWantToUploadTheImageToUser($imageFile, $usrUid, $url)
{
$imageFile = $this->getParameter('uploadFilesFolder') . $imageFile;
@@ -1458,17 +1484,17 @@ class RestContext extends BehatContext
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$postResult = curl_exec($ch);
if( $postResult === false)
{
//trigger_error(curl_error($ch));
throw new Exception("Image upload failed ($imageFile):\n\n"
. curl_error($ch));
}
if( $postResult === false)
{
//trigger_error(curl_error($ch));
throw new Exception("Image upload failed ($imageFile):\n\n"
. curl_error($ch));
}
curl_close($ch);
echo $postResult;
}
/**
/**
* @Given /^POST I want to upload the image "([^"]*)" to user with the key "([^"]*)" stored in session array as variable "([^"]*)"\. Url "([^"]*)"$/
*/
public function postIWantToUploadTheImageToUserWithTheKeyStoredInSessionArrayAsVariableUsrUidUrl($imageFile, $varName, $sessionVarName, $url)
@@ -1498,7 +1524,7 @@ class RestContext extends BehatContext
$this->_restObjectMethod = 'delete';
}
/**
/**
* @Given /^store response count in session variable as "([^"]*)"$/
*/
public function storeResponseCountInSessionVariableAs($varName)
@@ -1537,7 +1563,7 @@ class RestContext extends BehatContext
}
/**
/**
* @Given /^POST upload an input document "([^"]*)" to "([^"]*)"$/
*/
public function postUploadAnInputDocumentTo($file, $url, PyStringNode $string)
@@ -1617,7 +1643,7 @@ class RestContext extends BehatContext
}
}
/**
/**
* @Given /^store "([^"]*)" in session array as variable "([^"]*)" where an object has "([^"]*)" equal to "([^"]*)"$/
*/
public function storeInSessionArrayAsVariableWhereAnObjectHasEqualsTo($varName, $sessionVarName, $objectProperty, $objectValue)
@@ -1625,12 +1651,12 @@ class RestContext extends BehatContext
$swFound=false;
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
$sessionData->$sessionVarName = array();
$sessionData->$sessionVarName = array();
foreach($this->_data as $obj){
@@ -1650,7 +1676,7 @@ class RestContext extends BehatContext
}
}
/**
/**
* @Given /^that "([^"]*)" property in object "([^"]*)" equals "([^"]*)"$/
*/
public function thatPropertyInObjectEquals($propertyName, $propertyParent, $value)
@@ -1696,7 +1722,7 @@ class RestContext extends BehatContext
}
/**
/**
* @Given /^save exported process to "([^"]*)"$/
* @Given /^save exported process to "([^"]*)" as "([^"]*)"$/
*/
@@ -1722,7 +1748,7 @@ class RestContext extends BehatContext
}
/**
/**
* @Given /^POST a dynaform:$/
*/
public function postADynaform(PyStringNode $string)
@@ -1775,17 +1801,17 @@ class RestContext extends BehatContext
$fp = fopen(sys_get_temp_dir() . "/behat.log", "a+");
fwrite($fp, $string . PHP_EOL);
}
/**
/**
* @Then /^if database-connection with id "([^"]*)" is active$/
*/
public function ifDatabaseConnectionWithIdIsActive($dbConnectionId)
{
if(!(isset($this->_response))){
throw new \Exception('Empty result ' );
throw new \Exception('Empty result ' );
}
$message="";
$sw_error=false;
if($bodyResponse=json_decode($this->_response->getBody(true))){
if($bodyResponse=json_decode($this->_response->getBody(true))){
//print_r($bodyResponse);
foreach($bodyResponse as $testDetail){
$message.=$testDetail->test;
@@ -1798,22 +1824,21 @@ class RestContext extends BehatContext
$message.=" | ";
}
}else{
throw new \Exception('Empty result ' );
}
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
if(!isset($sessionData->dbconnectionStatus)){
$sessionData->dbconnectionStatus = new StdClass();
}
$sessionData->dbconnectionStatus->$dbConnectionId = !$sw_error;
file_put_contents("session.data", json_encode($sessionData));
if($sw_error){
}else{
throw new \Exception('Empty result ' );
}
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
if(!isset($sessionData->dbconnectionStatus)){
$sessionData->dbconnectionStatus = new StdClass();
}
$sessionData->dbconnectionStatus->$dbConnectionId = !$sw_error;
file_put_contents("session.data", json_encode($sessionData));
if($sw_error){
throw new PendingException($message);
}
}
@@ -1822,19 +1847,18 @@ class RestContext extends BehatContext
*/
public function databaseConnectionWithIdIsActive($dbConnectionId)
{
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
if(!$sessionData->dbconnectionStatus->$dbConnectionId){
/* if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}*/
$sessionData = new StdClass();
if(!$sessionData->dbconnectionStatus->$dbConnectionId){
throw new PendingException("Skip inactive dbconnection: $dbConnectionId");
}
}
/**
/**
* @Given /^OAUTH register an application$/
*/
public function oauthRegisterAnApplication(PyStringNode $data)
@@ -1852,130 +1876,130 @@ class RestContext extends BehatContext
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $authentication_url);
curl_setopt($ch, CURLOPT_REFERER, $login_url);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "form[USR_USERNAME]=$user_name&form[USR_PASSWORD]=$user_password&form[USER_LANG]=en&form[URL]");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$answer = curl_exec($ch);
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $authentication_url);
curl_setopt($ch, CURLOPT_REFERER, $login_url);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "form[USR_USERNAME]=$user_name&form[USR_PASSWORD]=$user_password&form[USER_LANG]=en&form[URL]");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$answer = curl_exec($ch);
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
if (strpos($newurl, "/login/login") !== false) {
throw new Exception('Bad credentials');
}
if (strpos($newurl, "/login/login") !== false) {
throw new Exception('Bad credentials');
}
//print "<textarea>$answer</textarea>";
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
//print "<textarea>$answer</textarea>";
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
// Read the session saved in the cookie file
// Read the session saved in the cookie file
if(!file_exists($cookie_file)){
throw new Exception('Invalid Cookie/Session: '.$cookie_file);
}
if(!file_exists($cookie_file)){
throw new Exception('Invalid Cookie/Session: '.$cookie_file);
}
//another request preserving the session
//another request preserving the session
$data = json_decode((string) $data);
$data = json_decode((string) $data);
$name=$data->name;
$description=$data->description;
$webSite = $data->webSite;
$redirectUri=$data->redirectUri;
$applicationNumber=$data->applicationNumber;
$name=$data->name;
$description=$data->description;
$webSite = $data->webSite;
$redirectUri=$data->redirectUri;
$applicationNumber=$data->applicationNumber;
//1. Register application
curl_setopt($ch, CURLOPT_URL, $oauth_app_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "option=INS&name=$name&description=$description&webSite=$webSite&redirectUri=$redirectUri");
$answer = curl_exec($ch);
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
//1. Register application
curl_setopt($ch, CURLOPT_URL, $oauth_app_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "option=INS&name=$name&description=$description&webSite=$webSite&redirectUri=$redirectUri");
$answer = curl_exec($ch);
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
if (strpos($newurl, "/login/login") !== false) {
throw new Exception('Not authenticated');
}
// json_decode(json)
$response=json_decode($answer);
$this->printDebug("Register application:\n".$answer."\n");
$this->_restObjectMethod = 'post';
$this->_headers['Content-Type'] = 'application/json; charset=UTF-8';
$this->_response = json_decode($answer);
if (strpos($newurl, "/login/login") !== false) {
throw new Exception('Not authenticated');
}
// json_decode(json)
$response=json_decode($answer);
$this->printDebug("Register application:\n".$answer."\n");
$this->_restObjectMethod = 'post';
$this->_headers['Content-Type'] = 'application/json; charset=UTF-8';
$this->_response = json_decode($answer);
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
foreach($response->data as $key => $varValue){
$sessionVarName=$key."_".$applicationNumber;
$sessionData->$sessionVarName = $varValue;
$this->printDebug("Save $sessionVarName = $varValue");
}
//print_r($sessionData);
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
foreach($response->data as $key => $varValue){
$sessionVarName=$key."_".$applicationNumber;
$sessionData->$sessionVarName = $varValue;
$this->printDebug("Save $sessionVarName = $varValue");
}
//print_r($sessionData);
$clientId = $response->data->CLIENT_ID;
$clientSecret = $response->data->CLIENT_SECRET;
$clientId = $response->data->CLIENT_ID;
$clientSecret = $response->data->CLIENT_SECRET;
//2. Request Authorization
curl_setopt($ch, CURLOPT_URL, $oauth_authorization_url."?"."response_type=code&client_id=$clientId&scope=*");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "allow=Accept&transaction_id=");
//print "response_type=code&client_id=$clientId&scope=*";
$answer = curl_exec($ch);
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$codeA = explode("code=",$newurl);
//2. Request Authorization
curl_setopt($ch, CURLOPT_URL, $oauth_authorization_url."?"."response_type=code&client_id=$clientId&scope=*");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "allow=Accept&transaction_id=");
//print "response_type=code&client_id=$clientId&scope=*";
$answer = curl_exec($ch);
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$codeA = explode("code=",$newurl);
$code = $codeA[1];
$this->printDebug("Authorization code:\n".$code."\n");
$code = $codeA[1];
$this->printDebug("Authorization code:\n".$code."\n");
//3. Request Token
$headr = array();
$headr[] = 'Content-Type: application/json';
$headr[] = 'Authorization: Basic '.base64_encode("$clientId:$clientSecret");
//3. Request Token
$headr = array();
$headr[] = 'Content-Type: application/json';
$headr[] = 'Authorization: Basic '.base64_encode("$clientId:$clientSecret");
curl_setopt($ch, CURLOPT_HTTPHEADER,$headr);
//curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $baseUrl."oauth2/token");
//curl_setopt($ch, CURLOPT_USERPWD, "$clientId:$clientSecret");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array("grant_type"=>"authorization_code","code"=>$code)));
curl_setopt($ch, CURLOPT_HTTPHEADER,$headr);
//curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $baseUrl."oauth2/token");
//curl_setopt($ch, CURLOPT_USERPWD, "$clientId:$clientSecret");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array("grant_type"=>"authorization_code","code"=>$code)));
$answer = curl_exec($ch);
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$this->printDebug("Request token:\n".$answer."\n");
//print_r("Request token:\n".$newurl."\n");
foreach(json_decode($answer) as $key => $varValue){
$sessionVarName=$key."_".$applicationNumber;
$sessionData->$sessionVarName = $varValue;
$this->printDebug("Save $sessionVarName = $varValue");
}
file_put_contents("session.data", json_encode($sessionData));
$answer = curl_exec($ch);
if (curl_error($ch)) {
throw new Exception(curl_error($ch));
}
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$this->printDebug("Request token:\n".$answer."\n");
//print_r("Request token:\n".$newurl."\n");
foreach(json_decode($answer) as $key => $varValue){
$sessionVarName=$key."_".$applicationNumber;
$sessionData->$sessionVarName = $varValue;
$this->printDebug("Save $sessionVarName = $varValue");
}
file_put_contents("session.data", json_encode($sessionData));
}
/**
/**
* @Given /^I request a owner password credential grant$/
*/
public function iRequestAOwnerPasswordCredentialGrant()
@@ -1995,7 +2019,7 @@ file_put_contents("session.data", json_encode($sessionData));
throw new Exception($this->_data->error." : ".$this->_data->error_description);
}
}
/**
/**
* @Given /^I request a client credential grant$/
*/
public function iRequestAClientCredentialGrant()
@@ -2015,7 +2039,7 @@ file_put_contents("session.data", json_encode($sessionData));
throw new Exception($this->_data->error." : ".$this->_data->error_description);
}
}
/**
/**
* @Given /^I request a refresh token for "([^"]*)"$/
*/
public function iRequestARefreshToken($refreshTokenSession)
@@ -2048,7 +2072,7 @@ file_put_contents("session.data", json_encode($sessionData));
$headr['Authorization'] = 'Basic '.base64_encode("$clientId:$clientSecret");
$request['refresh_token']=$varValue;
$this->_requestBody=json_encode($request);
print_r($this->_requestBody);
print_r($this->_requestBody);
$this->iRequest($baseUrl."oauth2/token", "absolute", $headr);
print_r($this->_data);
if(isset($this->_data->error)){
@@ -2056,7 +2080,7 @@ print_r($this->_requestBody);
}
}
/**
/**
* @Given /^OAUTH request implicit grant$/
*/
public function oauthRequestImplicitGrant(PyStringNode $data)
@@ -2090,7 +2114,7 @@ print_r($this->_requestBody);
//print_r($newurl);
if (strpos($newurl, "/login/login") !== false) {
throw new Exception('Bad credentials');
throw new Exception('Bad credentials');
}
@@ -2113,7 +2137,7 @@ print_r($this->_requestBody);
$response_type=$data->response_type;
$client_id=$data->client_id;
$scope = $data->scope;
$implicit_grant_number = $data->implicit_grant_number;
$implicit_grant_number = $data->implicit_grant_number;
//1. Register application
@@ -2129,26 +2153,26 @@ print_r($this->_requestBody);
if (strpos($newurl, "/login/login") !== false) {
throw new Exception('Not authenticated');
throw new Exception('Not authenticated');
}
$parts = parse_url($newurl);
parse_str($parts['fragment'], $fragment);
//print_r($fragment);
// json_decode(json)
// json_decode(json)
$response=json_decode($answer);
if (file_exists("session.data")) {
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
foreach($fragment as $key => $varValue){
$sessionVarName=$key."_".$implicit_grant_number;
$sessionData->$sessionVarName = $varValue;
}
//print_r($sessionData);
file_put_contents("session.data", json_encode($sessionData));
$sessionData = json_decode(file_get_contents("session.data"));
} else {
$sessionData = new StdClass();
}
foreach($fragment as $key => $varValue){
$sessionVarName=$key."_".$implicit_grant_number;
$sessionData->$sessionVarName = $varValue;
}
//print_r($sessionData);
file_put_contents("session.data", json_encode($sessionData));
//print_r("\nRegister application:\n".$answer."\n$oauth_authorization_url?response_type=$response_type&client_id=$client_id&scope=$scope\n");
//print_r($newurl);
$this->_restObjectMethod = 'post';
@@ -2158,7 +2182,7 @@ print_r($this->_requestBody);
}
/**
/**
* @Given /^that I assign an access token from session variable "([^"]*)"$/
*/
public function thatIAssignAnAccessTokenFromSessionVariable($varName)