diff --git a/behat.yml.dist b/behat.yml.dist index a8869196e..30d10b2d2 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -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 \ No newline at end of file diff --git a/features/backend/projects/database_connections/basic_sequence_database_connections.feature b/features/backend/projects/database_connections/basic_sequence_database_connections.feature index c3766eb95..db2393786 100644 --- a/features/backend/projects/database_connections/basic_sequence_database_connections.feature +++ b/features/backend/projects/database_connections/basic_sequence_database_connections.feature @@ -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_server": "", + "dbs_database_name": "", + "dbs_username": "", + "dbs_password": "", + "dbs_port": , + "dbs_encode": "", + "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 | + | | | | | | | | | + + @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_server": "", + "dbs_database_name": "", + "dbs_username": "", + "dbs_password": "", + "dbs_port": , + "dbs_encode": "", + "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 | + | | | | | | | | | + Scenario: Get a database connection (with change in "dbs_description" and "dbs_database_name") Given that I have a valid access_token diff --git a/features/backend/projects/database_connections/main_tests_database_connections_mysql.feature b/features/backend/projects/database_connections/main_tests_database_connections_mysql.feature index 4a49bed0b..afacfd8ed 100644 --- a/features/backend/projects/database_connections/main_tests_database_connections_mysql.feature +++ b/features/backend/projects/database_connections/main_tests_database_connections_mysql.feature @@ -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//database-connections" - Then the response status code should be 200 - And the response charset is "UTF-8" - And the response has record - Examples: + # GET /api/1.0/{workspace}/project//database-connections + # Get list DataBase Connections + Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections + Given I request "project//database-connections" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the response has 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: - - Scenario Outline: Test database connection to test - Given POST this data: - """ + | project | record | + | 74737540052e1641ab88249082085472 | 1 | + | 87648819953a85c0abc01d3080475981 | 1 | + + + # POST /api/1.0/{workspace}/project//database-connection/test + # Test DataBase Connection + Scenario Outline: Test database connection to test + Given POST this data: + """ { "dbs_type": "", "dbs_server": "", @@ -35,138 +40,13 @@ Feature: DataBase Connections Main Tests MySQL "dbs_description": "" } """ - And I request "project//database-connection/test" - Then if database-connection with id "" 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: + And I request "project//database-connection/test" + Then database-connection with id "" is active + Then the response status code should be 200 + And the response charset is "UTF-8" + And the content type is "application/json" - | 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 "" is active - And POST this data: - """ - { - "dbs_type": "", - "dbs_server": "", - "dbs_database_name": "", - "dbs_username": "", - "dbs_password": "", - "dbs_port": , - "dbs_encode": "", - "dbs_description": "" - } - """ - And I request "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_" - - 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 "" is active - And I request "project//database-connections" - Then the response status code should be 200 - And the response charset is "UTF-8" - And the response has 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 "" is active - And PUT this data: - """ - { - "dbs_type": "", - "dbs_server": "", - "dbs_database_name": "", - "dbs_username": "", - "dbs_password": "", - "dbs_port": , - "dbs_encode": "", - "dbs_description": "" - } - """ - And that I want to update a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" - And I request "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 "" is active - And that I want to get a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" - And I request "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 "" - And that "dbs_server" is set to "" - And that "dbs_database_name" is set to "" - And that "dbs_username" is set to "" - And that "dbs_password" is set to "" - And that "dbs_port" is set to "" - And that "dbs_encode" is set to "" - And that "dbs_description" is set to "" - - 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 "" is active - And that I want to delete a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" - And I request "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 "" is active - And I request "project//database-connections" - Then the response status code should be 200 - And the response charset is "UTF-8" - And the response has 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 | \ No newline at end of file + Examples: + | dbs_uid_number | project | dbs_type | dbs_server | dbs_database_name | dbs_username | dbs_password | dbs_port | dbs_encode | dbs_description | + | 46110938554821d2ddb8d01076533986 | 74737540052e1641ab88249082085472 | | | | | | | | | + | 40639901154821d2e3bb7e8061116901 | 87648819953a85c0abc01d3080475981 | | | | | | | | | \ No newline at end of file diff --git a/features/backend/projects/database_connections/main_tests_database_connections_sqlserver.feature b/features/backend/projects/database_connections/main_tests_database_connections_sqlserver.feature index 3aad843e3..6081e43a7 100644 --- a/features/backend/projects/database_connections/main_tests_database_connections_sqlserver.feature +++ b/features/backend/projects/database_connections/main_tests_database_connections_sqlserver.feature @@ -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//database-connections" - Then the response status code should be 200 - And the response charset is "UTF-8" - And the response has record - Examples: + # GET /api/1.0/{workspace}/project//database-connections + # Get list DataBase Connections + Scenario Outline: Get the DataBase Connections List when there are exactly zero DataBase Connections + Given I request "project//database-connections" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the response has 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//database-connection/test + # Test DataBase Connection + Scenario Outline: Test database connection to test + Given POST this data: + """ { "dbs_type": "", "dbs_server": "", @@ -35,23 +39,24 @@ Feature: DataBase Connections Main Tests SQL Server "dbs_description": "" } """ - And I request "project//database-connection/test" - Then if database-connection with id "" 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: + And I request "project//database-connection/test" + Then if database-connection with id "" is active + Then the response status code should be 200 + And the response charset is "UTF-8" + And the content type is "application/json" - | 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 | | | | | | | | | + | 2 | 1265557095225ff5c688f46031700471 | | | | | | | | | - Scenario Outline: Create a new database connection - Given database-connection with id "" is active - And POST this data: - """ + # POST /api/1.0/{workspace}/project//database-connection + # Create new DataBase Connection + Scenario Outline: Create a new database connection + Given database-connection with id "" is active + And POST this data: + """ { "dbs_type": "", "dbs_server": "", @@ -63,38 +68,40 @@ Feature: DataBase Connections Main Tests SQL Server "dbs_description": "" } """ - And I request "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_" + And I request "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_" - 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 | | | | | | | | | + | 2 | 1265557095225ff5c688f46031700471 | | | | | | | | | - Scenario Outline: Get the DataBase Connections List when there are exactly one DataBase Connections in each process - Given database-connection with id "" is active - And I request "project//database-connections" - Then the response status code should be 200 - And the response charset is "UTF-8" - And the response has record + # GET /api/1.0/{workspace}/project//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 "" is active + And I request "project//database-connections" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the response has record - Examples: + Examples: + | project | record | dbs_uid_number | + | 106912358530c9b14ac15d3001790900 | 1 | 1 | + | 1265557095225ff5c688f46031700471 | 1 | 2 | - | 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 "" is active - And PUT this data: - """ + # PUT /api/1.0/{workspace}/project//database-connection + # Update a DataBase Connection + Scenario Outline: Update a database connection + Given database-connection with id "" is active + And PUT this data: + """ { "dbs_type": "", "dbs_server": "", @@ -106,66 +113,68 @@ Feature: DataBase Connections Main Tests SQL Server "dbs_description": "" } """ - And that I want to update a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" - And I request "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_" + And I request "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 | | | | | | | | | + | 2 | 1265557095225ff5c688f46031700471 | | | | | | | | | - Scenario Outline: Get a single database connection and check some properties - Given database-connection with id "" is active - And that I want to get a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" - And I request "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 "" - And that "dbs_server" is set to "" - And that "dbs_database_name" is set to "" - And that "dbs_username" is set to "" - And that "dbs_password" is set to "" - And that "dbs_port" is set to "" - And that "dbs_encode" is set to "" - And that "dbs_description" is set to "" + # GET /api/1.0/{workspace}/project//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 "" is active + And that I want to get a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" + And I request "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 "" + And that "dbs_server" is set to "" + And that "dbs_database_name" is set to "" + And that "dbs_username" is set to "" + And that "dbs_password" is set to "" + And that "dbs_port" is set to "" + And that "dbs_encode" is set to "" + And that "dbs_description" is set to "" - 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 | | | | | | | | | + | 2 | 1265557095225ff5c688f46031700471 | | | | | | | | | - Scenario Outline: Delete all Database Connection created previously in this script - Given database-connection with id "" is active - And that I want to delete a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" - And I request "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//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 "" is active + And that I want to delete a resource with the key "dbs_uid" stored in session array as variable "dbs_uid_" + And I request "project//database-connection" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the type is "object" - Examples: + Examples: + | project | dbs_uid_number | + | 106912358530c9b14ac15d3001790900 | 1 | + | 1265557095225ff5c688f46031700471 | 2 | - | 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 "" is active - And I request "project//database-connections" - Then the response status code should be 200 - And the response charset is "UTF-8" - And the response has record + # GET /api/1.0/{workspace}/project//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 "" is active + And I request "project//database-connections" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the response has 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 | \ No newline at end of file + Examples: + | project | record | dbs_uid_number | + | 106912358530c9b14ac15d3001790900 | 0 | 1 | + | 1265557095225ff5c688f46031700471 | 0 | 2 | \ No newline at end of file diff --git a/features/backend/projects/database_connections/negative_tests_database_connections.feature b/features/backend/projects/database_connections/negative_tests_database_connections.feature index 755f2048c..fe76867bd 100644 --- a/features/backend/projects/database_connections/negative_tests_database_connections.feature +++ b/features/backend/projects/database_connections/negative_tests_database_connections.feature @@ -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_server": "", @@ -18,35 +18,38 @@ Feature: DataBase Connections Negative Tests "dbs_description": "" } """ - And I request "project//database-connection" - Then the response status code should be - And the response status message should have the following text "" - + And I request "project//database-connection" + Then the response status code should be + And the response status message should have the following text "" - 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 | + 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 | | | | | | | | mysql connection | 400 | dbs_type | + | Field required dbs_server | 74737540052e1641ab88249082085472 | | | | | | | | mysql connection | 400 | dbs_server | + | Field required dbs_database_name | 74737540052e1641ab88249082085472 | | | | | | | | mysql connection | 400 | dbs_database_name | + | Field required dbs_encode | 74737540052e1641ab88249082085472 | | | | | | | | mysql connection | 400 | dbs_encode | + | Field required project | | | | | | | | | 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_server": "", + "dbs_database_name": "", + "dbs_username": "", + "dbs_password": "", + "dbs_port": , + "dbs_encode": "", + "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" \ No newline at end of file + 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 | + | | | | | | | | | + | | | | | | | | | \ No newline at end of file diff --git a/features/bootstrap/RestContext.php b/features/bootstrap/RestContext.php index efdcf730c..27abb39cc 100644 --- a/features/bootstrap/RestContext.php +++ b/features/bootstrap/RestContext.php @@ -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$/ */ @@ -349,7 +349,7 @@ class RestContext extends BehatContext } } - + if($urlType=="absolute"){ @@ -379,11 +379,11 @@ class RestContext extends BehatContext case 'POST': $postFields = is_object($this->_restObject) ? (array)$this->_restObject - : $this->_restObject; + : $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) @@ -1056,7 +1082,7 @@ class RestContext extends BehatContext */ public function storeInAsVariable($varName, $sessionVarName) { - + if (!isset($this->_data->$varName)) { throw new \Exception("JSON Response does not have '$varName' property\n\n" ); } @@ -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(); } /** @@ -1145,7 +1171,7 @@ class RestContext extends BehatContext }else{ $data = $this->_data; } - + if (!is_array($data)) { if ($quantityOfRecords == 0) { //if we expect 0 records and the response in fact is not an array, just return as a valid test @@ -1178,7 +1204,7 @@ class RestContext extends BehatContext if($key == $position){ $varValue = $value; } - } + } } else { $varValue = $sessionData->$sessionVarName; } @@ -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(); @@ -1240,11 +1266,11 @@ class RestContext extends BehatContext $this->_restDeleteQueryStringSuffix = "/" . $varValue; $this->printDebug("$varName = $varValue\nsessionVarName = $sessionVarName\n"); - + $this->_restObjectMethod = 'delete'; } - /** + /** * @Given /^the response status message should have the following text "([^"]*)"$/ */ public function theResponseStatusMessageShouldHaveTheFollowingText($arg1) @@ -1262,13 +1288,13 @@ class RestContext extends BehatContext $error_found=false; $messages = array(); foreach($bodyResponse as $resp){ - if(isset($resp->error)){ + if(isset($resp->error)){ $messages[]=$resp->error; if (strpos($resp->error,$arg1) !== false){ $error_found=true; } } - + } if(!$error_found){ $message=implode("\n- ",$messages); @@ -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; @@ -1410,9 +1436,9 @@ class RestContext extends BehatContext $headr[] = 'Authorization: Bearer '.$accesstoken; $path = rtrim($prfPath, '/') . '/'; $sfile = end(explode("/",$prfFile)); - + $postFields = array('prf_filename'=>$sfile, "prf_path" => $path); - + $this->_restObjectMethod = 'post'; $this->_restObject = $postFields; $this->iRequest($url); @@ -1433,20 +1459,20 @@ 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; $baseUrl = $this->getParameter('base_url'); $url = $baseUrl.$url.$usrUid."/image-upload"; - + $accesstoken = $this->getParameter('access_token'); $headr = array(); $headr[] = 'Authorization: Bearer '.$accesstoken; @@ -1457,18 +1483,18 @@ class RestContext extends BehatContext curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 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) @@ -1514,7 +1540,7 @@ class RestContext extends BehatContext file_put_contents("session.data", json_encode($sessionData)); } - + /** * @Given /^the response has (\d+) records more than "([^"]*)"$/ */ @@ -1537,7 +1563,7 @@ class RestContext extends BehatContext } - /** + /** * @Given /^POST upload an input document "([^"]*)" to "([^"]*)"$/ */ public function postUploadAnInputDocumentTo($file, $url, PyStringNode $string) @@ -1545,12 +1571,12 @@ class RestContext extends BehatContext $file = $this->getParameter('uploadFilesFolder') . $file; $postFields = json_decode($string); $postFields->form ='@'.$file; - + $this->_restObjectMethod = 'post'; $this->_restObject = $postFields; $this->iRequest($url); - + } /** @@ -1561,11 +1587,11 @@ class RestContext extends BehatContext $file = $this->getParameter('uploadFilesFolder') . $file; $postFields = new StdClass(); $postFields->project_file ='@'.$file; - + $this->_restObjectMethod = 'post'; $this->_restObject = $postFields; $this->iRequest($url); - + } @@ -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,19 +1651,19 @@ 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){ if((isset($obj->$objectProperty))&&($obj->$objectProperty == $objectValue)){ $swFound=true; $varValue = $obj->$varName; - + //$sessionData->$sessionVarName = $varValue; $sessionData->{$sessionVarName}[] = $varValue; file_put_contents("session.data", json_encode($sessionData)); @@ -1650,7 +1676,7 @@ class RestContext extends BehatContext } } - /** + /** * @Given /^that "([^"]*)" property in object "([^"]*)" equals "([^"]*)"$/ */ public function thatPropertyInObjectEquals($propertyName, $propertyParent, $value) @@ -1694,9 +1720,9 @@ class RestContext extends BehatContext . $this->_response->getBody(true)); } - + } - /** + /** * @Given /^save exported process to "([^"]*)"$/ * @Given /^save exported process to "([^"]*)" as "([^"]*)"$/ */ @@ -1722,18 +1748,18 @@ class RestContext extends BehatContext } - /** + /** * @Given /^POST a dynaform:$/ */ public function postADynaform(PyStringNode $string) { $postFields = json_decode($string); - + if ((isset($postFields->dyn_content))&&(file_exists($this->getParameter('uploadFilesFolder') . $postFields->dyn_content))) { $postFields->dyn_content = $this->getParameter('uploadFilesFolder') . $postFields->dyn_content; $this->printDebug("Extracting dyanform content from: ".$postFields->dyn_content."\n"); $postFields->dyn_content = file_get_contents($postFields->dyn_content); - + $string = json_encode($postFields); } @@ -1755,7 +1781,7 @@ class RestContext extends BehatContext $postFields->dyn_content = $this->getParameter('uploadFilesFolder') . $postFields->dyn_content; $this->printDebug("Extracting dyanform content from: ".$postFields->dyn_content."\n"); $postFields->dyn_content = file_get_contents($postFields->dyn_content); - + $string = json_encode($postFields); } @@ -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) @@ -1845,137 +1869,137 @@ class RestContext extends BehatContext $authentication_url = $this->getParameter('authentication_url'); $oauth_app_url = $this->getParameter('oauth_app_url'); $oauth_authorization_url = $this->getParameter('oauth_authorization_url'); - + $user_name = $this->getParameter('user_name'); $user_password = $this->getParameter('user_password'); $cookie_file = sys_get_temp_dir()."pmcookie"; - - - - $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'); - } - //print ""; - if (curl_error($ch)) { - throw new Exception(curl_error($ch)); - } + + $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); - // Read the session saved in the cookie file - - if(!file_exists($cookie_file)){ - throw new Exception('Invalid Cookie/Session: '.$cookie_file); - } - + if (strpos($newurl, "/login/login") !== false) { + throw new Exception('Bad credentials'); + } - //another request preserving the session + //print ""; + if (curl_error($ch)) { + throw new Exception(curl_error($ch)); + } - $data = json_decode((string) $data); - - $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); + // Read the session saved in the cookie file - 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($cookie_file)){ + throw new Exception('Invalid Cookie/Session: '.$cookie_file); + } - - 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; - //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"); - //3. Request Token - $headr = array(); - $headr[] = 'Content-Type: application/json'; - $headr[] = 'Authorization: Basic '.base64_encode("$clientId:$clientSecret"); + //another request preserving the session - 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))); + $data = json_decode((string) $data); + + $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); + + 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); + + $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); + + $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"); + + 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) @@ -2028,7 +2052,7 @@ file_put_contents("session.data", json_encode($sessionData)); $this->printDebug("Refresh token"); $headr = array(); - + $request=array(); $request['grant_type']="refresh_token"; if (file_exists("session.data")) { @@ -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) @@ -2067,12 +2091,12 @@ print_r($this->_requestBody); $authentication_url = $this->getParameter('authentication_url'); $oauth_app_url = $this->getParameter('oauth_app_url'); $oauth_authorization_url = $this->getParameter('oauth_authorization_url'); - + $user_name = $this->getParameter('user_name'); $user_password = $this->getParameter('user_password'); $cookie_file = sys_get_temp_dir()."pmcookie"; - - + + $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $authentication_url); @@ -2082,15 +2106,15 @@ print_r($this->_requestBody); 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_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); - + $newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); + //print_r($newurl); if (strpos($newurl, "/login/login") !== false) { - throw new Exception('Bad credentials'); + throw new Exception('Bad credentials'); } @@ -2101,7 +2125,7 @@ print_r($this->_requestBody); // Read the session saved in the cookie file - + if(!file_exists($cookie_file)){ throw new Exception('Invalid Cookie/Session: '.$cookie_file); } @@ -2109,12 +2133,12 @@ print_r($this->_requestBody); //another request preserving the session $data = json_decode((string) $data); - + $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 curl_setopt($ch, CURLOPT_URL, $oauth_authorization_url."?response_type=$response_type&client_id=$client_id&scope=$scope"); @@ -2125,30 +2149,30 @@ print_r($this->_requestBody); if (curl_error($ch)) { throw new Exception(curl_error($ch)); } - $newurl = urldecode(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)); + $newurl = urldecode(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)); 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) @@ -2172,17 +2196,17 @@ print_r($this->_requestBody); $varValue = ''; } else { $varValue = $sessionData->$varName; - } + } $access_token = $varValue; if (strlen($access_token)<= 10) { - + throw new Exception ("Access token is not valid\n\n" ); } $this->printDebug("Access token set to: $access_token"); $this->access_token = $access_token; } - + } \ No newline at end of file