diff --git a/test_scripts/API/VehicleData/GetVehicleData/004_Success_deviceStatus_primaryAudioSource.lua b/test_scripts/API/VehicleData/AudioSource/001_Success_deviceStatus_primaryAudioSource.lua similarity index 90% rename from test_scripts/API/VehicleData/GetVehicleData/004_Success_deviceStatus_primaryAudioSource.lua rename to test_scripts/API/VehicleData/AudioSource/001_Success_deviceStatus_primaryAudioSource.lua index 70f80a19e4..6c54ec2a30 100644 --- a/test_scripts/API/VehicleData/GetVehicleData/004_Success_deviceStatus_primaryAudioSource.lua +++ b/test_scripts/API/VehicleData/AudioSource/001_Success_deviceStatus_primaryAudioSource.lua @@ -1,9 +1,5 @@ --------------------------------------------------------------------------------------------------- -- Proposal: https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0182-audio-source-am-fm-xm.md --- User story: TBD --- Use case: TBD --- --- Requirement summary:TBD -- -- Description: -- In case: @@ -15,7 +11,7 @@ --------------------------------------------------------------------------------------------------- --[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/common') --[[ Local Variables ]] local audioSources = { @@ -74,8 +70,6 @@ common.Title("Preconditions") common.Step("Clean environment", common.preconditions) common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) common.Title("Test") for _, source in pairs(audioSources) do diff --git a/test_scripts/API/VehicleData/OnVehicleData/005_Success_flow_deviceStatus_primaryAudioSource.lua b/test_scripts/API/VehicleData/AudioSource/002_Success_flow_deviceStatus_primaryAudioSource.lua similarity index 91% rename from test_scripts/API/VehicleData/OnVehicleData/005_Success_flow_deviceStatus_primaryAudioSource.lua rename to test_scripts/API/VehicleData/AudioSource/002_Success_flow_deviceStatus_primaryAudioSource.lua index 08f533906a..2909f543c0 100644 --- a/test_scripts/API/VehicleData/OnVehicleData/005_Success_flow_deviceStatus_primaryAudioSource.lua +++ b/test_scripts/API/VehicleData/AudioSource/002_Success_flow_deviceStatus_primaryAudioSource.lua @@ -1,9 +1,5 @@ --------------------------------------------------------------------------------------------------- -- Proposal: https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0182-audio-source-am-fm-xm.md --- User story: TBD --- Use case: TBD --- --- Requirement summary:TBD -- -- Description: -- In case: @@ -14,7 +10,7 @@ --------------------------------------------------------------------------------------------------- --[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/common') --[[ Local Variables ]] local audioSources = { @@ -90,8 +86,6 @@ common.Title("Preconditions") common.Step("Clean environment", common.preconditions) common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) common.Title("Test") common.Step("RPC " .. rpc1.name, processRPCSubscribeSuccess) diff --git a/test_scripts/API/VehicleData/GenericNetworkSignalData/commonGenericNetSignalData.lua b/test_scripts/API/VehicleData/GenericNetworkSignalData/commonGenericNetSignalData.lua index 55ebe96096..5b2bcccf99 100644 --- a/test_scripts/API/VehicleData/GenericNetworkSignalData/commonGenericNetSignalData.lua +++ b/test_scripts/API/VehicleData/GenericNetworkSignalData/commonGenericNetSignalData.lua @@ -142,6 +142,8 @@ local function VehicleDataItemsWithDataTableCreation() common.VehicleDataItemsWithData.vin.APItype = "VEHICLEDATA_VIN" common.VehicleDataItemsWithData.prndl.value = "PARK" common.VehicleDataItemsWithData.prndl.APItype = "VEHICLEDATA_PRNDL" + common.VehicleDataItemsWithData.handsOffSteering.value = true + common.VehicleDataItemsWithData.handsOffSteering.APItype = "VEHICLEDATA_HANDSOFFSTEERING" local tirePressureParams = common.VehicleDataItemsWithData.tirePressure.params tirePressureParams.pressureTelltale.value = "OFF" local leftFrontParams = tirePressureParams.leftFront.params diff --git a/test_scripts/API/VehicleData/GetVehicleData/001_GetVD_Success_flow.lua b/test_scripts/API/VehicleData/GetVehicleData/001_GetVD_Success_flow.lua new file mode 100644 index 0000000000..31d29b4bb5 --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/001_GetVD_Success_flow.lua @@ -0,0 +1,34 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes GetVehicleData RPC with parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) GetVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid GetVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends VI.GetVehicleData response with data to SDL +-- SDL does: +-- - a) send GetVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams()) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.get, common.getVehicleData, { param }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/GetVehicleData/001_Success_flow.lua b/test_scripts/API/VehicleData/GetVehicleData/001_Success_flow.lua deleted file mode 100644 index 59cdcede31..0000000000 --- a/test_scripts/API/VehicleData/GetVehicleData/001_Success_flow.lua +++ /dev/null @@ -1,56 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case 1: Main Flow --- --- Requirement summary: --- [GetVehicleData] As a mobile app wants to send a request to get the details of the vehicle data --- --- Description: --- In case: --- mobile application sends valid GetVehicleData to SDL and this request is allowed by Policies --- SDL must: --- 1) Transfer this request to HMI --- 2) After successful response from hmi --- respond SUCCESS, success:true and parameter value received from HMI to mobile application ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Functions ]] -local function processRPCSuccess(pData) - local reqParams = { - [pData] = true - } - local hmiResParams = { - [pData] = common.allVehicleData[pData].value - } - local cid = common.getMobileSession():SendRPC("GetVehicleData", reqParams) - common.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", reqParams) - :Do(function(_, data) - common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", hmiResParams) - end) - local mobResParams = common.cloneTable(hmiResParams) - mobResParams.success = true - mobResParams.resultCode = "SUCCESS" - common.getMobileSession():ExpectResponse(cid, mobResParams) -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("`100, 1` in GetVehicleDataRequest in ini file", common.setSDLIniParameter, - { "GetVehicleDataRequest", "100, 1" }) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -for vehicleDataName in pairs(common.allVehicleData) do - common.Step("RPC GetVehicleData " .. vehicleDataName, processRPCSuccess, { vehicleDataName }) -end - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/GetVehicleData/002_GetVD_disallowed.lua b/test_scripts/API/VehicleData/GetVehicleData/002_GetVD_disallowed.lua new file mode 100644 index 0000000000..fd63a11aae --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/002_GetVD_disallowed.lua @@ -0,0 +1,52 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL rejects GetVehicleData request with resultCode "DISALLOWED" +-- if parameter is not allowed by policy +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) parameter is not allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid GetVehicleData(=true) request to SDL +-- SDL does: +-- - a) send GetVehicleData response with (success = false, resultCode = "DISALLOWED") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "DISALLOWED" + +--[[ Local Functions ]] +local function getVDGroup(pDisallowedParam) + local params = {} + for param in pairs(common.getVDParams()) do + if param ~= pDisallowedParam then table.insert(params, param) end + end + return { + rpcs = { + [common.rpc.get] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + } + } + } +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams()) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions, { getVDGroup(param) }) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + + common.Title("Test") + common.Step("RPC " .. common.rpc.get .. " DISALLOWED", common.processRPCFailure, + { common.rpc.get, param, result }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/GetVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua b/test_scripts/API/VehicleData/GetVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua deleted file mode 100644 index ce8157f245..0000000000 --- a/test_scripts/API/VehicleData/GetVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua +++ /dev/null @@ -1,52 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case: request is allowed but parameter of this request is NOT allowed by Policies --- --- Requirement summary: --- [GetVehicleData] As a mobile app wants to send a request to get the details of the vehicle data --- --- Description: --- In case: --- 1) mobile application sends valid GetVehicleData to SDL and this request is allowed --- by Policies but RPC parameter is not allowed --- SDL must: --- SDL responds DISALLOWED, success:false to mobile application --- and doesn't transfer this request to HMI ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = { - name = "GetVehicleData", - params = { - engineOilLife = true, - fuelRange = true, - tirePressure = true, - electronicParkBrakeStatus = true, - turnSignal = true - } -} - ---[[ Local Functions ]] -local function processRPCFailure() - local cid = common.getMobileSession():SendRPC(rpc.name, rpc.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc.name, rpc.params):Times(0) - common.getMobileSession():ExpectResponse(cid, { success = false, resultCode = "DISALLOWED" }) -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdateMin }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -common.Step("RPC " .. rpc.name .. " DISALLOWED", processRPCFailure) - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/GetVehicleData/003_GetVD_disallowed_after_PTU.lua b/test_scripts/API/VehicleData/GetVehicleData/003_GetVD_disallowed_after_PTU.lua new file mode 100644 index 0000000000..4ff52c6933 --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/003_GetVD_disallowed_after_PTU.lua @@ -0,0 +1,70 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL rejects GetVehicleData request with resultCode "DISALLOWED" +-- if parameter is not allowed by policy after PTU +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) GetVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid GetVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends VI.GetVehicleData response with data to SDL +-- SDL does: +-- - a) send GetVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App +-- 3) PTU is performed with disabling permissions for parameter +-- 4) App sends valid GetVehicleData(=true) request to SDL +-- SDL does: +-- - a) send GetVehicleData response with (success = false, resultCode = "DISALLOWED") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "DISALLOWED" + +--[[ Local Function ]] +local function getVDGroup(pDisallowedParam) + local params = {} + for param in pairs(common.getVDParams()) do + if param ~= pDisallowedParam then table.insert(params, param) end + end + return { + rpcs = { + [common.rpc.get] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + } + } + } +end + +local function policyTableUpdate(pDisallowedParam) + local function ptUpdate(pt) + pt.policy_table.functional_groupings["NewTestCaseGroup"] = getVDGroup(pDisallowedParam) + pt.policy_table.app_policies[common.getAppParams().fullAppID].groups = { "Base-4", "NewTestCaseGroup" } + end + common.policyTableUpdate(ptUpdate) +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams()) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + common.Step("RPC GetVehicleData, SUCCESS", common.getVehicleData, { param }) + + common.Title("Test") + common.Step("PTU with disabling permissions for VD parameter", policyTableUpdate, { param }) + common.Step("RPC " .. common.rpc.get .. " DISALLOWED after PTU", common.processRPCFailure, + { common.rpc.get, param, result }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/GetVehicleData/003_GetVD_gps_mandatory_parameters.lua b/test_scripts/API/VehicleData/GetVehicleData/003_GetVD_gps_mandatory_parameters.lua deleted file mode 100644 index 9fa6b3f530..0000000000 --- a/test_scripts/API/VehicleData/GetVehicleData/003_GetVD_gps_mandatory_parameters.lua +++ /dev/null @@ -1,100 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case 1: Main Flow --- --- Requirement summary: --- [GetVehicleData] As a mobile app wants to send a request to get the details of the vehicle data --- --- Description: --- In case: --- mobile application sends valid GetVehicleData to SDL and this request is allowed by Policies --- SDL must: --- 1) Transfer this request to HMI --- 2) After successful response from hmi with all mandatory parameters --- respond SUCCESS, success:true and resend parameter values received from HMI to mobile application --- 3) After response from HMI with missed mandatory parameters --- respond success:false, GENERIC_ERROR ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = { - name = "GetVehicleData", - params = { - gps = true - } -} - -local vehicleDataValues = { - allData = { - longitudeDegrees = 10, - latitudeDegrees = 20, - utcYear = 2010, - utcMonth = 1, - utcDay = 2, - utcHours = 3, - utcMinutes = 4, - utcSeconds = 5, - compassDirection = "NORTH", - actual = true, - satellites = 6, - dimension = "2D", - altitude = 7, - heading = 8, - speed = 9, - pdop = 10, - hdop = 11, - vdop = 12 - }, - mandatoryOnly = { - longitudeDegrees = 10, - latitudeDegrees = 20 - } -} - -local vehicleDataValuesMissedMandatory = { - missedAll = { utcYear = 2010 }, - missedLongitude = { latitudeDegrees = 20 }, - missedLatitude = { longitudeDegrees = 10 } -} - ---[[ Local Functions ]] -local function processRPC(pParams, isSuccess) - local cid = common.getMobileSession():SendRPC(rpc.name, rpc.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc.name, rpc.params) - :Do(function(_, data) - common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { gps = pParams }) - end) - if isSuccess == true then - local responseParams = {} - responseParams.gps = pParams - responseParams.success = true - responseParams.resultCode = "SUCCESS" - common.getMobileSession():ExpectResponse(cid, responseParams) - else - common.getMobileSession():ExpectResponse(cid, - { success = false, resultCode = "GENERIC_ERROR", info = "Invalid message received from vehicle" }) - end -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -for key, value in pairs(vehicleDataValues) do - common.Step("RPC GetVehicleData gps " .. key, processRPC, { value, true }) -end -for key, value in pairs(vehicleDataValuesMissedMandatory) do - common.Step("RPC GetVehicleData gps " .. key, processRPC, { value, false }) -end - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/GetVehicleData/004_GetVD_HMI_responds_with_invalid_data.lua b/test_scripts/API/VehicleData/GetVehicleData/004_GetVD_HMI_responds_with_invalid_data.lua new file mode 100644 index 0000000000..f208568c27 --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/004_GetVD_HMI_responds_with_invalid_data.lua @@ -0,0 +1,35 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "GENERIC_ERROR" to GetVehicleData request +-- if HMI response for parameter is invalid +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) GetVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid GetVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends GetVehicleData response with invalid type of parameter +-- SDL does: +-- - a) send GetVehicleData response with (success = false, resultCode = "GENERIC_ERROR") to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param, value in common.spairs(common.getVDParams()) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.get .. " invalid HMI response", common.processRPCgenericError, + { common.rpc.get, param, common.getInvalidData(value) }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/GetVehicleData/005_GetVD_App_sends_invalid_request.lua b/test_scripts/API/VehicleData/GetVehicleData/005_GetVD_App_sends_invalid_request.lua new file mode 100644 index 0000000000..38abe7d0af --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/005_GetVD_App_sends_invalid_request.lua @@ -0,0 +1,37 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "INVALID_DATA" to GetVehicleData request +-- if App sends request for parameter with invalid data +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) GetVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends invalid GetVehicleData(=123) request to SDL +-- SDL does: +-- - a) send GetVehicleData response with (success = false, resultCode = "INVALID_DATA") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "INVALID_DATA" +local value = 123 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams()) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.get .. " invalid App request", + common.processRPCFailure, { common.rpc.get, param, result, value }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/GetVehicleData/006_GetVD_mandatory_parameters.lua b/test_scripts/API/VehicleData/GetVehicleData/006_GetVD_mandatory_parameters.lua new file mode 100644 index 0000000000..66f7329864 --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/006_GetVD_mandatory_parameters.lua @@ -0,0 +1,71 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes GetVehicleData RPC with parameter +-- with only mandatory sub-parameters in HMI response +-- or with missing at least one mandatory sub-parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) GetVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid GetVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends VI.GetVehicleData response with data to SDL +-- with only mandatory sub-parameters +-- SDL does: +-- - a) send GetVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App +-- 3) App sends valid GetVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 4) HMI sends VI.GetVehicleData response with data to SDL +-- with missing mandatory sub-parameter +-- SDL does: +-- - a) ignore HMI response +-- - b) send GetVehicleData response with (success = false, resultCode = "GENERIC_ERROR") to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Functions ]] +local function processRPC(pRPC, pParam, pValue, pIsSuccess) + local cid = common.getMobileSession():SendRPC(pRPC, { [pParam] = true }) + common.getHMIConnection():ExpectRequest("VehicleInfo." .. pRPC, { [pParam] = true }) + :Do(function(_, data) + common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { [pParam] = pValue }) + end) + if pIsSuccess == true then + local responseParams = {} + responseParams[pParam] = pValue + responseParams.success = true + responseParams.resultCode = "SUCCESS" + common.getMobileSession():ExpectResponse(cid, responseParams) + else + common.getMobileSession():ExpectResponse(cid, + { success = false, resultCode = "GENERIC_ERROR", info = "Invalid message received from vehicle" }) + end +end + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("RAI", common.registerApp) + +common.Title("Test") +for param in pairs(common.mandatoryVD) do + common.Title("VD parameter: " .. param) + for caseName, value in pairs(common.getMandatoryOnlyCases(param)) do + common.Step("RPC " .. common.rpc.get .. " with " .. caseName .. " SUCCESS", processRPC, + { common.rpc.get, param, value, true }) + end + for caseName, value in pairs(common.getMandatoryMissingCases(param)) do + common.Step("RPC " .. common.rpc.get .. " with " .. caseName .. " GENERIC_ERROR", processRPC, + { common.rpc.get, param, value, false }) + end +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/GetVehicleData/007_GetVD_app_version_is_greater_than_parameter_version.lua b/test_scripts/API/VehicleData/GetVehicleData/007_GetVD_app_version_is_greater_than_parameter_version.lua new file mode 100644 index 0000000000..aac7450ffc --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/007_GetVD_app_version_is_greater_than_parameter_version.lua @@ -0,0 +1,45 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes vehicle data RPCs with parameter +-- if an app is registered with version greater than current parameter version +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) Vehicle Data RPCs and parameter are allowed by policies +-- 3) parameter has param_version defined (e.g. 5.1.0) +-- 4) App is registered with specific syncMsgVersion (e.g. 5.1.1) +-- which is greater than version of parameter +-- +-- In case: +-- 1) App sends any of Vehicle Data RPC with parameter +-- - a) GetVehicleData, SubscribeVehicleData, UnsubscribeVehicleData +-- SDL does: +-- - a) process this RPC successfully +-- 2) App is subscribed to parameter +-- 3) HMI sends OnVehicleData notification with parameter +-- SDL does: +-- - a) process this Notification successfully +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local isExpected = 1 + +--[[ Scenario ]] +for param, version in common.spairs(common.versioningVD) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Set App version", common.setAppVersion, { version, common.operator.increase }) + common.Step("Register App", common.registerApp) + + common.Title("Test") + common.Step("RPC " .. common.rpc.get, common.getVehicleData, { param }) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, { param, isExpected }) + common.Step("RPC " .. common.rpc.unsub, common.processSubscriptionRPC, { common.rpc.unsub, param }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/GetVehicleData/008_GetVD_app_version_is_less_than_parameter_version.lua b/test_scripts/API/VehicleData/GetVehicleData/008_GetVD_app_version_is_less_than_parameter_version.lua new file mode 100644 index 0000000000..4d36361d2a --- /dev/null +++ b/test_scripts/API/VehicleData/GetVehicleData/008_GetVD_app_version_is_less_than_parameter_version.lua @@ -0,0 +1,46 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL rejects vehicle data RPCs with parameter +-- if an app is registered with version less than current parameter version +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) Vehicle Data RPCs and parameter are allowed by policies +-- 3) parameter has param_version defined (e.g. 5.1.0) +-- 4) App is registered with specific syncMsgVersion (e.g. 5.0.9) +-- which is less than version of parameter +-- +-- In case: +-- 1) App sends any of Vehicle Data RPC with parameter +-- - a) GetVehicleData, SubscribeVehicleData, UnsubscribeVehicleData +-- SDL does: +-- - a) send GetVehicleData response with (success = false, resultCode = "INVALID_DATA") to App +-- - b) not transfer this request to HMI +-- 2) HMI sends OnVehicleData notification with parameter +-- SDL does: +-- - a) ignore this notification and not transfer it to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "INVALID_DATA" +local isNotExpected = 0 + +--[[ Scenario ]] +for param, version in common.spairs(common.versioningVD) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Set App version", common.setAppVersion, { version, common.operator.decrease }) + common.Step("Register App", common.registerApp) + + common.Title("Test") + common.Step("RPC " .. common.rpc.get, common.processRPCFailure, { common.rpc.get, param, result }) + common.Step("RPC " .. common.rpc.sub, common.processRPCFailure, { common.rpc.sub, param, result }) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, { param, isNotExpected }) + common.Step("RPC " .. common.rpc.unsub, common.processRPCFailure, { common.rpc.unsub, param, result }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/OnVehicleData/001_OnVD_Success.lua b/test_scripts/API/VehicleData/OnVehicleData/001_OnVD_Success.lua new file mode 100644 index 0000000000..b0a26b4c34 --- /dev/null +++ b/test_scripts/API/VehicleData/OnVehicleData/001_OnVD_Success.lua @@ -0,0 +1,41 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes OnVehicleData notification with parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, OnVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered +-- 4) App is subscribed to parameter data +-- +-- In case: +-- 1) HMI sends valid OnVehicleData notification with parameter data to SDL +-- SDL does: +-- - a) transfer this notification to App +-- Exception: Notification for unsubscribable VD parameter is not transfered +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local isExpected = 1 +local isNotExpected = 0 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, { param, isExpected }) +end +for param in common.spairs(common.getVDParams(false)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, { param, isNotExpected }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/OnVehicleData/001_Success_flow.lua b/test_scripts/API/VehicleData/OnVehicleData/001_Success_flow.lua deleted file mode 100644 index f031fb8a58..0000000000 --- a/test_scripts/API/VehicleData/OnVehicleData/001_Success_flow.lua +++ /dev/null @@ -1,44 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case 1: TO ADD!!! --- --- Requirement summary: --- [OnVehicleData] As a mobile app is subscribed for VI parameter --- and received notification about this parameter change from hmi --- --- Description: --- In case: --- 1) If application is subscribed to get vehicle data with 'engineOilLife' parameter --- 2) Notification about changes in subscribed parameter is received from hmi --- SDL must: --- Forward this notification to mobile application ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = "SubscribeVehicleData" --- removed because vin parameter is not applicable for SubscribeVehicleData -common.allVehicleData.vin = nil - ---[[ Scenario ]] -runner.Title("Preconditions") -runner.Step("Clean environment", common.preconditions) -runner.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -runner.Step("Activate App", common.activateApp) - -runner.Title("Test") -for vehicleDataName in pairs(common.allVehicleData) do - runner.Step("RPC " .. rpc .. " " .. vehicleDataName, common.processRPCSubscriptionSuccess, - {rpc, vehicleDataName }) - runner.Step("RPC OnVehicleData " .. vehicleDataName, common.checkNotificationSuccess, - { vehicleDataName }) -end - -runner.Title("Postconditions") -runner.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/OnVehicleData/002_NotificationForUnsubsribedParameter_Ignored_flow.lua b/test_scripts/API/VehicleData/OnVehicleData/002_NotificationForUnsubsribedParameter_Ignored_flow.lua deleted file mode 100644 index b320fd41b5..0000000000 --- a/test_scripts/API/VehicleData/OnVehicleData/002_NotificationForUnsubsribedParameter_Ignored_flow.lua +++ /dev/null @@ -1,50 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case 1: Main Flow --- Item: Use Case: request is allowed by Policies --- --- Requirement summary: --- [OnVehicleData] As a hmi sends notification about VI parameter change --- but mobile app is not subscribed for this parameter --- --- Description: --- In case: --- 1) Hmi sends valid OnVehicleData notification to SDL --- but mobile app is not subscribed for this parameter --- SDL must: --- Ignore this request and do not forward it to mobile app ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc1 = "SubscribeVehicleData" -local rpc2 = "UnsubscribeVehicleData" --- removed because vin parameter is not applicable for SubscribeVehicleData -common.allVehicleData.vin = nil - ---[[ Scenario ]] -runner.Title("Preconditions") -runner.Step("Clean environment", common.preconditions) -runner.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -runner.Step("Activate App", common.activateApp) - -runner.Title("Test") -for vehicleDataName in pairs(common.allVehicleData) do - runner.Step("RPC " .. rpc1 .. " " .. vehicleDataName, common.processRPCSubscriptionSuccess, - {rpc1, vehicleDataName }) - runner.Step("RPC OnVehicleData " .. vehicleDataName .. " forwarded to mobile", common.checkNotificationSuccess, - { vehicleDataName }) - runner.Step("RPC " .. rpc2 .. " " .. vehicleDataName, common.processRPCSubscriptionSuccess, - {rpc2, vehicleDataName }) - runner.Step("RPC OnVehicleData " .. vehicleDataName .. " not forwarded to mobile", common.checkNotificationIgnored, - { vehicleDataName }) -end - -runner.Title("Postconditions") -runner.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/OnVehicleData/002_OnVD_disallowed.lua b/test_scripts/API/VehicleData/OnVehicleData/002_OnVD_disallowed.lua new file mode 100644 index 0000000000..eeb78c58dd --- /dev/null +++ b/test_scripts/API/VehicleData/OnVehicleData/002_OnVD_disallowed.lua @@ -0,0 +1,58 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL doesn't transfer OnVehicleData notification to App +-- if parameter is not allowed by policy +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) is not allowed by policies for OnVehicleData RPC +-- 3) App is registered +-- 4) App is subscribed to parameter +-- +-- In case: +-- 1) HMI sends valid OnVehicleData notification with parameter data to SDL +-- SDL does: +-- - a) ignore this notification and not transfer it to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local isNotExpected = 0 + +--[[ Local Functions ]] +local function getVDGroup(pDisallowedParam) + local all_params = {} + local params = {} + for param in pairs(common.getVDParams(true)) do + if param ~= pDisallowedParam then table.insert(params, param) end + table.insert(all_params, param) + end + return { + rpcs = { + [common.rpc.sub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = all_params + }, + [common.rpc.on] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + } + } + } +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions, { getVDGroup(param) }) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + + common.Title("Test") + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.on .. " ignored", common.sendOnVehicleData, { param, isNotExpected }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/OnVehicleData/003_NotificationParameterDisallowedByPolicies_Ignored_flow.lua b/test_scripts/API/VehicleData/OnVehicleData/003_NotificationParameterDisallowedByPolicies_Ignored_flow.lua deleted file mode 100644 index 1fd0714310..0000000000 --- a/test_scripts/API/VehicleData/OnVehicleData/003_NotificationParameterDisallowedByPolicies_Ignored_flow.lua +++ /dev/null @@ -1,63 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case 1: TO ADD!!! --- --- Requirement summary: --- [OnVehicleData] As a mobile app is subscribed for VI parameter --- and received notification about this parameter change from hmi --- --- Description: --- In case: --- 1) If application is subscribed to get vehicle data with 'engineOilLife' parameter --- 2) Parameter is disallowed by Policies in this notification --- 3) Notification about changes in subscribed parameter is received from hmi --- SDL must: --- Ignore this notification and not send to mobile application ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = "SubscribeVehicleData" --- removed because vin parameter is not applicable for SubscribeVehicleData -common.allVehicleData.vin = nil - ---[[ Local Functions ]] -local function ptUpdate(pTbl) - common.ptUpdate(pTbl) - local NewTestGroup = common.cloneTable(pTbl.policy_table.functional_groupings["Emergency-1"]) - for vehicleDataName in pairs(NewTestGroup.rpcs) do - NewTestGroup.rpcs[vehicleDataName].parameters = common.EMPTY_ARRAY - end - pTbl.policy_table.functional_groupings.NewTestGroup = NewTestGroup - pTbl.policy_table.app_policies[common.getConfigAppParams(1).fullAppID].groups = { "Base-4", "Emergency-1" } - pTbl.policy_table.app_policies[common.getConfigAppParams(2).fullAppID].groups = { "Base-4", "NewTestGroup" } -end - -local function checkNotification2apps(pData) - local hmiNotParams = { [pData] = common.allVehicleData[pData].value } - local mobNotParams = common.cloneTable(hmiNotParams) - common.getHMIConnection():SendNotification("VehicleInfo.OnVehicleData", hmiNotParams) - common.getMobileSession(1):ExpectNotification("OnVehicleData", mobNotParams) - common.getMobileSession(2):ExpectNotification("OnVehicleData"):Times(0) -end - ---[[ Scenario ]] -runner.Title("Preconditions") -runner.Step("Clean environment", common.preconditions) -runner.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI 1", common.registerApp, { 1 }) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -runner.Step("RAI 2", common.registerApp, { 2 }) -common.Step("PTU", common.policyTableUpdate, { ptUpdate }) -runner.Step("Activate App1", common.activateApp, { 1 }) -runner.Step("Activate App2", common.activateApp, { 2 }) - -runner.Title("Test") -for vehicleDataName in pairs(common.allVehicleData) do - runner.Step("RPC " .. rpc .. " " .. vehicleDataName, common.processRPCSubscriptionSuccess, { rpc, vehicleDataName }) - runner.Step("RPC OnVehicleData " .. vehicleDataName, checkNotification2apps, { vehicleDataName }) -end diff --git a/test_scripts/API/VehicleData/OnVehicleData/003_OnVD_disallowed_after_PTU.lua b/test_scripts/API/VehicleData/OnVehicleData/003_OnVD_disallowed_after_PTU.lua new file mode 100644 index 0000000000..d7d1635162 --- /dev/null +++ b/test_scripts/API/VehicleData/OnVehicleData/003_OnVD_disallowed_after_PTU.lua @@ -0,0 +1,72 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL doesn't transfer OnVehicleData notification to App +-- if parameter is not allowed by policy after PTU +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, OnVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered and subscribed to parameter +-- +-- In case: +-- 1) HMI sends OnVehicleData notification with parameter data to SDL +-- SDL does: +-- - a) transfer this notification to App +-- 2) PTU is performed with disabling permissions for parameter +-- 3) HMI sends OnVehicleData notification with parameter data to SDL +-- SDL does: +-- - a) ignore this notification and not transfer it to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local isExpected = 1 +local isNotExpected = 0 + +--[[ Local Functions ]] +local function getVDGroup(pDisallowedParam) + local all_params = {} + local params = {} + for param in pairs(common.getVDParams(true)) do + if param ~= pDisallowedParam then table.insert(params, param) end + table.insert(all_params, param) + end + return { + rpcs = { + [common.rpc.sub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = all_params + }, + [common.rpc.on] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + } + } + } +end + +local function policyTableUpdate(pDisallowedParam) + local function ptUpdate(pt) + pt.policy_table.functional_groupings["NewTestCaseGroup"] = getVDGroup(pDisallowedParam) + pt.policy_table.app_policies[common.getAppParams().fullAppID].groups = { "Base-4", "NewTestCaseGroup" } + end + common.policyTableUpdate(ptUpdate) +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions, { getVDGroup(param) }) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.on .. " transferred", common.sendOnVehicleData, { param, isExpected }) + + common.Title("Test") + common.Step("PTU with disabling permissions for VD parameter", policyTableUpdate, { param }) + common.Step("RPC " .. common.rpc.on .. " ignored", common.sendOnVehicleData, { param, isNotExpected }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/OnVehicleData/004_OnVD_gps_mandatory_parameters.lua b/test_scripts/API/VehicleData/OnVehicleData/004_OnVD_gps_mandatory_parameters.lua deleted file mode 100644 index 238720d7d9..0000000000 --- a/test_scripts/API/VehicleData/OnVehicleData/004_OnVD_gps_mandatory_parameters.lua +++ /dev/null @@ -1,113 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case 1: TO ADD!!! --- --- Requirement summary: --- [OnVehicleData] As a mobile app is subscribed for VI parameter --- and received notification about this parameter change from hmi --- --- Description: --- In case: --- 1) If application is subscribed to get vehicle data with 'gps' parameter --- 2) Notification about changes with mandatory parameters is received from hmi --- 3) Notification about changes without mandatory parameters is received from hmi --- SDL must: --- 1) Forward this notification to mobile application --- 2) Not forward this notification to mobile application ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc1 = { - name = "SubscribeVehicleData", - params = { - gps = true - } -} - -local vehicleDataResults = { - gps = { - dataType = "VEHICLEDATA_GPS", - resultCode = "SUCCESS" - } -} - -local vehicleDataValues = { - allData = { - longitudeDegrees = 10, - latitudeDegrees = 20, - utcYear = 2010, - utcMonth = 1, - utcDay = 2, - utcHours = 3, - utcMinutes = 4, - utcSeconds = 5, - compassDirection = "NORTH", - actual = true, - satellites = 6, - dimension = "2D", - altitude = 7, - heading = 8, - speed = 9, - pdop = 10, - hdop = 11, - vdop = 12 - }, - mandatoryOnly = { - longitudeDegrees = 10, - latitudeDegrees = 20 - } -} - -local vehicleDataValuesMissedMandatory = { - missedAll = { utcYear = 2010 }, - missedLongitude = { latitudeDegrees = 20 }, - missedLatitude = { longitudeDegrees = 10 } -} - ---[[ Local Functions ]] -local function processRPCSubscribeSuccess() - local cid = common.getMobileSession():SendRPC(rpc1.name, rpc1.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc1.name, rpc1.params) - :Do(function(_, data) - common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", vehicleDataResults) - end) - - local responseParams = vehicleDataResults - responseParams.success = true - responseParams.resultCode = "SUCCESS" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - -local function checkNotification(pParams, isNotificationExpect) - common.getHMIConnection():SendNotification("VehicleInfo.OnVehicleData", { gps = pParams }) - if isNotificationExpect == true then - common.getMobileSession():ExpectNotification("OnVehicleData", { gps = pParams }) - else - common.getMobileSession():ExpectNotification("OnVehicleData") - :Times(0) - end -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) -common.Step("SubscribeVehicleData gps", processRPCSubscribeSuccess) - -common.Title("Test") -for key, value in pairs(vehicleDataValues) do - common.Step("RPC OnVehicleData gps " .. key, checkNotification, { value, true }) -end -for key, value in pairs(vehicleDataValuesMissedMandatory) do - common.Step("RPC OnVehicleData gps " .. key, checkNotification, { value, false }) -end - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/OnVehicleData/004_OnVD_with_invalid_data.lua b/test_scripts/API/VehicleData/OnVehicleData/004_OnVD_with_invalid_data.lua new file mode 100644 index 0000000000..fb6e10639e --- /dev/null +++ b/test_scripts/API/VehicleData/OnVehicleData/004_OnVD_with_invalid_data.lua @@ -0,0 +1,43 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL doesn't transfer OnVehicleData notification to App +-- if HMI sends notification with invalid data for parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) OnVehicleData, SubscribeVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered +-- 4) App is subscribed to parameter +-- +-- In case: +-- 1) HMI sends OnVehicleData notification with invalid data for parameter to SDL +-- SDL does: +-- - a) ignore this notification and not transfer to App +-- Addition: Notification for unsubscribable VD parameter is not transfered as well +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local isNotExpected = 0 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param, value in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, + { param, isNotExpected, common.getInvalidData(value) }) +end +for param, value in common.spairs(common.getVDParams(false)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, + { param, isNotExpected, common.getInvalidData(value) }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/OnVehicleData/005_OnVD_App_is_not_subscribed.lua b/test_scripts/API/VehicleData/OnVehicleData/005_OnVD_App_is_not_subscribed.lua new file mode 100644 index 0000000000..dd141bacd0 --- /dev/null +++ b/test_scripts/API/VehicleData/OnVehicleData/005_OnVD_App_is_not_subscribed.lua @@ -0,0 +1,49 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL doesn't transfer OnVehicleData notification with parameter to App +-- if an app is not subscribed to this parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData, OnVehicleData RPCs and +-- parameter are allowed by policies +-- 3) App is registered +-- 4) App is subscribed to parameter +-- +-- In case: +-- 1) HMI sends valid OnVehicleData notification with parameter data to SDL +-- SDL does: +-- - a) transfer this notification to App +-- 2) App unsubscribes from parameter +-- 3) HMI sends valid OnVehicleData notification with parameter data to SDL +-- SDL does: +-- - a) not transfer this notification to App +-- Exception: Notification for unsubscribable VD parameter is not transfered +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local isExpected = 1 +local isNotExpected = 0 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, { param, isExpected }) + common.Step("RPC " .. common.rpc.unsub, common.processSubscriptionRPC, { common.rpc.unsub, param }) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, { param, isNotExpected }) +end +for param in common.spairs(common.getVDParams(false)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.on, common.sendOnVehicleData, { param, isNotExpected }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/OnVehicleData/006_OnVD_mandatory_parameters.lua b/test_scripts/API/VehicleData/OnVehicleData/006_OnVD_mandatory_parameters.lua new file mode 100644 index 0000000000..8be87c2b04 --- /dev/null +++ b/test_scripts/API/VehicleData/OnVehicleData/006_OnVD_mandatory_parameters.lua @@ -0,0 +1,54 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes OnVehicleData notification with parameter +-- with only mandatory sub-parameters +-- or with missing at least one mandatory sub-parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, OnVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered +-- 4) App is subscribed to parameter data +-- +-- In case: +-- 1) HMI sends valid OnVehicleData notification with parameter data to SDL +-- with only mandatory sub-parameters +-- SDL does: +-- - a) transfer this notification to App +-- 2) HMI sends OnVehicleData notification with parameter data to SDL +-- without at least one mandatory sub-parameter +-- SDL does: +-- - a) not transfer this notification to App +-- 4) HMI sends OnVehicleData notification with parameter data to SDL +-- with missing mandatory sub-parameter +-- SDL does: +-- - a) ignore this notification and not transfer to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local isExpected = 1 +local isNotExpected = 0 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("RAI", common.registerApp) + +common.Title("Test") +for param in pairs(common.mandatoryVD) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, { common.rpc.sub, param }) + for caseName, value in pairs(common.getMandatoryOnlyCases(param)) do + common.Step("RPC " .. common.rpc.on .. " with " .. caseName .. " Transfered", common.sendOnVehicleData, + { param, isExpected, value }) + end + for caseName, value in pairs(common.getMandatoryMissingCases(param)) do + common.Step("RPC " .. common.rpc.on .. " with " .. caseName .. " Ignored", common.sendOnVehicleData, + { param, isNotExpected, value }) + end +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/001_SubscribeVD_Success.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/001_SubscribeVD_Success.lua new file mode 100644 index 0000000000..fcc2fdef1e --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/001_SubscribeVD_Success.lua @@ -0,0 +1,39 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes SubscribeVehicleData RPC with parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends SubscribeVehicleData response with data to SDL +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App +-- Exception: SDL does respond with "INVALID_DATA" in case app tries to subscribe for unsubscribable VD parameter +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) +end +for param in common.spairs(common.getVDParams(false)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub, common.processRPCFailure, { common.rpc.sub, param, "INVALID_DATA" }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/001_Success_flow.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/001_Success_flow.lua deleted file mode 100644 index 82c91e95e5..0000000000 --- a/test_scripts/API/VehicleData/SubscribeVehicleData/001_Success_flow.lua +++ /dev/null @@ -1,41 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case: request is allowed by Policies --- --- Requirement summary: --- [SubscribeVehicleData] As a mobile app wants to send a request to subscribe for specified parameter --- --- Description: --- In case: --- 1) mobile application sends valid SubscribeVehicleData to SDL and this request is allowed by Policies --- SDL must: --- Transfer this request to HMI and after successful response from hmi --- Respond SUCCESS, success:true to mobile application ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = "SubscribeVehicleData" --- removed because vin parameter is not applicable for SubscribeVehicleData -common.allVehicleData.vin = nil - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -for vehicleDataName in pairs(common.allVehicleData) do - runner.Step("RPC " .. rpc .. " " .. vehicleDataName, common.processRPCSubscriptionSuccess, - {rpc, vehicleDataName }) -end - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua deleted file mode 100644 index 0132fafc31..0000000000 --- a/test_scripts/API/VehicleData/SubscribeVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua +++ /dev/null @@ -1,78 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case: request is allowed but parameter of this request is NOT allowed by Policies --- --- Requirement summary: --- [SubscribeVehicleData] As a mobile app wants to send a request to get the details of the vehicle data --- --- Description: --- In case: --- Mobile application sends valid SubscribeVehicleData to SDL and this request is --- allowed by Policies but RPC parameter is not allowed --- SDL must: --- Respond DISALLOWED, success:false to mobile application and not transfer this request to HMI ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = { - name = "SubscribeVehicleData", - params = { - engineOilLife = true, - fuelRange = true, - tirePressure = true, - electronicParkBrakeStatus = true, - turnSignal = true - - } -} - -local vehicleDataResults = { - engineOilLife = { - dataType = "VEHICLEDATA_ENGINEOILLIFE", - resultCode = "DISALLOWED" - }, - fuelRange = { - dataType = "VEHICLEDATA_FUELRANGE", - resultCode = "DISALLOWED" - }, - tirePressure = { - dataType = "VEHICLEDATA_TIREPRESSURE", - resultCode = "DISALLOWED" - }, - electronicParkBrakeStatus = { - dataType = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", - resultCode = "DISALLOWED" - }, - turnSignal = { - dataType = "VEHICLEDATA_TURNSIGNAL", - resultCode = "DISALLOWED" - } -} - ---[[ Local Functions ]] -local function processRPCFailure() - local cid = common.getMobileSession():SendRPC(rpc.name, rpc.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc.name, rpc.params):Times(0) - local responseParams = vehicleDataResults - responseParams.success = false - responseParams.resultCode = "DISALLOWED" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdateMin }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -common.Step("RPC " .. rpc.name , processRPCFailure) - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/002_SubscribeVD_disallowed.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/002_SubscribeVD_disallowed.lua new file mode 100644 index 0000000000..9ea599a173 --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/002_SubscribeVD_disallowed.lua @@ -0,0 +1,51 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL rejects SubscribeVehicleData request with resultCode "DISALLOWED" +-- if parameter is not allowed by policy +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) parameter is not allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = false, resultCode = "DISALLOWED") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "DISALLOWED" + +--[[ Local Functions ]] +local function getVDGroup(pDisallowedParam) + local params = {} + for param in pairs(common.getVDParams(true)) do + if param ~= pDisallowedParam then table.insert(params, param) end + end + return { + rpcs = { + [common.rpc.sub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + } + } + } +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions, { getVDGroup(param) }) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + + common.Title("Test") + common.Step("RPC " .. common.rpc.sub .. " DISALLOWED", common.processRPCFailure, { common.rpc.sub, param, result }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/003_RPC_parameter_already_subscribed_Result_IGNORED_flow.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/003_RPC_parameter_already_subscribed_Result_IGNORED_flow.lua deleted file mode 100644 index 45c7af3af1..0000000000 --- a/test_scripts/API/VehicleData/SubscribeVehicleData/003_RPC_parameter_already_subscribed_Result_IGNORED_flow.lua +++ /dev/null @@ -1,113 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- Item: Use Case: request is allowed by policies but app is already subscribed for specified parameter --- --- Requirement summary: --- [SubscribeVehicleData] As a mobile app wants to send a request to subscribe for specified parameter --- --- Description: --- In case: --- Mobile application sends valid SubscribeVehicleData to SDL and this request --- is allowed by Policies but app is already subscribed for specified parameter --- SDL must: --- SDL responds IGNORED, success:false and info: "Already subscribed on some provided VehicleData." --- to mobile application and doesn't transfer this request to HMI ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = { - name = "SubscribeVehicleData", - params = { - engineOilLife = true, - fuelRange = true, - tirePressure = true, - electronicParkBrakeStatus = true, - turnSignal = true - } -} - -local vehicleDataResults = { - engineOilLife = { - dataType = "VEHICLEDATA_ENGINEOILLIFE", - resultCode = "SUCCESS" - }, - fuelRange = { - dataType = "VEHICLEDATA_FUELRANGE", - resultCode = "SUCCESS" - }, - tirePressure = { - dataType = "VEHICLEDATA_TIREPRESSURE", - resultCode = "SUCCESS" - }, - electronicParkBrakeStatus = { - dataType = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", - resultCode = "SUCCESS" - }, - turnSignal = { - dataType = "VEHICLEDATA_TURNSIGNAL", - resultCode = "SUCCESS" - } -} - -local vehicleDataResults2 = { - engineOilLife = { - dataType = "VEHICLEDATA_ENGINEOILLIFE", - resultCode = "DATA_ALREADY_SUBSCRIBED" - }, - fuelRange = { - dataType = "VEHICLEDATA_FUELRANGE", - resultCode = "DATA_ALREADY_SUBSCRIBED" - }, - tirePressure = { - dataType = "VEHICLEDATA_TIREPRESSURE", - resultCode = "DATA_ALREADY_SUBSCRIBED" - }, - turnSignal = { - dataType = "VEHICLEDATA_TURNSIGNAL", - resultCode = "DATA_ALREADY_SUBSCRIBED" - }, - electronicParkBrakeStatus = { - dataType = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", - resultCode = "DATA_ALREADY_SUBSCRIBED" - } -} - ---[[ Local Functions ]] -local function processRPCSuccess() - local cid = common.getMobileSession():SendRPC(rpc.name, rpc.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc.name, rpc.params) - :Do(function(_, data) - common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", - vehicleDataResults) - end) - local responseParams = vehicleDataResults - responseParams.success = true - responseParams.resultCode = "SUCCESS" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - -local function processRPCIgnored() - local cid = common.getMobileSession():SendRPC(rpc.name, rpc.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc.name, rpc.params):Times(0) - local responseParams = vehicleDataResults2 - responseParams.success = false - responseParams.resultCode = "IGNORED" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -common.Step("RPC " .. rpc.name .. " 1st time" , processRPCSuccess) -common.Step("RPC " .. rpc.name .. " 2nd time" , processRPCIgnored) - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/003_SubscribeVD_disallowed_after_PTU.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/003_SubscribeVD_disallowed_after_PTU.lua new file mode 100644 index 0000000000..c08b91a799 --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/003_SubscribeVD_disallowed_after_PTU.lua @@ -0,0 +1,69 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL rejects SubscribeVehicleData request with resultCode "DISALLOWED" +-- if parameter is not allowed by policy after PTU +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends SubscribeVehicleData response with data to SDL +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = true, resultCode = SUCCESS", +-- = ) to App +-- 3) PTU is performed with disabling permissions for parameter +-- 4) App sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = false, resultCode = "DISALLOWED") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "DISALLOWED" + +--[[ Local Function ]] +local function getVDGroup(pDisallowedParam) + local params = {} + for param in pairs(common.getVDParams(true)) do + if param ~= pDisallowedParam then table.insert(params, param) end + end + return { + rpcs = { + [common.rpc.sub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + } + } + } +end + +local function policyTableUpdate(pDisallowedParam) + local function ptUpdate(pt) + pt.policy_table.functional_groupings["NewTestCaseGroup"] = getVDGroup(pDisallowedParam) + pt.policy_table.app_policies[common.getAppParams().fullAppID].groups = { "Base-4", "NewTestCaseGroup" } + end + common.policyTableUpdate(ptUpdate) +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) + + common.Title("Test") + common.Step("PTU with disabling permissions for VD parameter", policyTableUpdate, { param }) + common.Step("RPC " .. common.rpc.sub .. " DISALLOWED after PTU", common.processRPCFailure, { common.rpc.sub, result }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/004_SubscribeVD_HMI_responds_with_invalid_data.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/004_SubscribeVD_HMI_responds_with_invalid_data.lua new file mode 100644 index 0000000000..fbe67d0bb6 --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/004_SubscribeVD_HMI_responds_with_invalid_data.lua @@ -0,0 +1,46 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "GENERIC_ERROR" to SubscribeVehicleData request +-- if HMI response for parameter is invalid +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends invalid response for parameter +-- SDL does: +-- - a) ignore this response +-- - b) send SubscribeVehicleData response with (success = false, resultCode = "GENERIC_ERROR") to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Functions ]] +local function getInvalidData(pParam) + return { + wrongDataType = { dataType = "UNKNOWN", resultCode = "SUCCESS" }, + wrongResultCode = { dataType = common.vd[pParam], resultCode = "UNKNOWN" } + } +end + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + for caseName, value in common.spairs(getInvalidData(param)) do + common.Step("RPC " .. common.rpc.sub .. " invalid HMI response " .. caseName, + common.processRPCgenericError, { common.rpc.sub, param, value }) + end +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/005_SubscribeVD_App_sends_invalid_request.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/005_SubscribeVD_App_sends_invalid_request.lua new file mode 100644 index 0000000000..048472a607 --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/005_SubscribeVD_App_sends_invalid_request.lua @@ -0,0 +1,37 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "INVALID_DATA" to SubscribeVehicleData request +-- if App sends request with invalid data for parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends invalid SubscribeVehicleData(=123) request to SDL +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = false, resultCode = "INVALID_DATA") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "INVALID_DATA" +local value = 123 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub .. " invalid App request", + common.processRPCFailure, { common.rpc.sub, param, result, value }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/006_SubscribeVD_2nd_request_IGNORED.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/006_SubscribeVD_2nd_request_IGNORED.lua new file mode 100644 index 0000000000..940582692a --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/006_SubscribeVD_2nd_request_IGNORED.lua @@ -0,0 +1,49 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "IGNORED" to 2nd SubscribeVehicleData request +-- with prameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) process request successfully +-- 2) App sends valid SubscribeVehicleData(=true) request to SDL 2nd time +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = false, resultCode = "IGNORED") to App +-- - b) not transfer this request to HMI +-- Exception: SDL does respond with "INVALID_DATA" in case app tries to subscribe for unsubscribable VD parameter +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "IGNORED" + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC 1 " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.sub, param }) + common.Step("RPC 2 " .. common.rpc.sub .. " IGNORED", common.processRPCFailure, + { common.rpc.sub, param, result }) +end +for param in common.spairs(common.getVDParams(false)) do + common.Title("VD parameter: " .. param) + common.Step("RPC 1 " .. common.rpc.sub .. " INVALID_DATA", common.processRPCFailure, + { common.rpc.sub, param, "INVALID_DATA" }) + common.Step("RPC 2 " .. common.rpc.sub .. " INVALID_DATA", common.processRPCFailure, + { common.rpc.sub, param, "INVALID_DATA" }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/007_SubscribeVD_for_2_apps.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/007_SubscribeVD_for_2_apps.lua new file mode 100644 index 0000000000..ddf05c487c --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/007_SubscribeVD_for_2_apps.lua @@ -0,0 +1,57 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes SubscribeVehicleData RPC for two Apps with parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App_1 and App_2 are registered +-- +-- In case: +-- 1) App_1 sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends successful SubscribeVehicleData response with data to SDL +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App_1 +-- 3) App_2 sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) send SubscribeVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App_2 +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local appId_1 = 1 +local appId_2 = 2 +local isExpectedSubscribeVDonHMI = true +local isNotExpectedSubscribeVDonHMI = false +local isExpected = 1 +local isNotExpected = 0 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App_1", common.registerApp, { appId_1 }) +common.Step("Register App_2", common.registerAppWOPTU, { appId_2 }) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("Absence of OnVehicleData for both apps", + common.sendOnVehicleDataTwoApps, { param, isNotExpected, isNotExpected }) + common.Step("RPC " .. common.rpc.sub .. " for App_1", + common.processSubscriptionRPC, { common.rpc.sub, param, appId_1, isExpectedSubscribeVDonHMI }) + common.Step("OnVehicleData for App_1", + common.sendOnVehicleDataTwoApps, { param, isExpected, isNotExpected }) + common.Step("RPC " .. common.rpc.sub .. " for App_2", + common.processSubscriptionRPC, { common.rpc.sub, param, appId_2, isNotExpectedSubscribeVDonHMI }) + common.Step("OnVehicleData for both apps", + common.sendOnVehicleDataTwoApps, { param, isExpected, isExpected }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/008_SubscribeVD_HMI_responds_with_not_success_codes.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/008_SubscribeVD_HMI_responds_with_not_success_codes.lua new file mode 100644 index 0000000000..72da15e82f --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/008_SubscribeVD_HMI_responds_with_not_success_codes.lua @@ -0,0 +1,62 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check Processing of SubscribeVehicleData request +-- if HMI respond with unsuccessful resultCode for parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App is registered +-- +-- In case: +-- 1) App sends valid SubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI. +-- 2) HMI responds with "SUCCESS" result to SubscribeVehicleData request +-- and with not success result for vehicle data +-- SDL does: +-- - a) respond "SUCCESS", success:true and with unsuccessful resultCode for data to the mobile app +-- Note: expected behavior is under clarification in https://github.com/smartdevicelink/sdl_core/issues/3384 +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local resultCodes = { + "TRUNCATED_DATA", + "DISALLOWED", + "USER_DISALLOWED", + "INVALID_ID", + "VEHICLE_DATA_NOT_AVAILABLE", + "DATA_NOT_SUBSCRIBED", + "IGNORED", + "DATA_ALREADY_SUBSCRIBED" +} + +--[[ Local Variables ]] +local function subscribeToVDwithUnsuccessCodeForVD(pParam, pCode) + local response = { dataType = common.vd[pParam], resultCode = pCode} + local cid = common.getMobileSession():SendRPC("SubscribeVehicleData", { [pParam] = true }) + common.getHMIConnection():ExpectRequest("VehicleInfo.SubscribeVehicleData", { [pParam] = true }) + :Do(function(_,data) + common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { [pParam] = response }) + end) + common.getMobileSession():ExpectResponse(cid, { success = true, resultCode = "SUCCESS", [pParam] = response }) +end + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + for _, code in common.spairs(resultCodes) do + common.Step("RPC " .. common.rpc.sub .. " resultCode " .. code, + subscribeToVDwithUnsuccessCodeForVD, { param, code }) + end +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/009_SubscribeVD_Resumption_of_subscription_Unexpected_Disconnect.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/009_SubscribeVD_Resumption_of_subscription_Unexpected_Disconnect.lua new file mode 100644 index 0000000000..a545cc76cc --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/009_SubscribeVD_Resumption_of_subscription_Unexpected_Disconnect.lua @@ -0,0 +1,44 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL resumes the subscription for parameter after unexpected disconnect +-- +-- In case: +-- 1) App is subscribed to parameter +-- 2) Unexpected disconnect and reconnect are performed +-- 3) App re-registered with actual HashId +-- SDL does: +-- a) send VI.SubscribeVehicleData(=true) request to HMI +-- 4) HMI sends SubscribeVehicleData response to SDL +-- SDL does: +-- a) not send SubscribeVehicleData response to mobile app +-- 5) HMI sends valid OnVehicleData notification with parameter data. +-- SDL does: +-- a) process this notification and transfer it to mobile app. +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local appId = 1 +local isSubscribed = true +local isExpected = 1 + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + common.Step("App subscribes to VD param", common.processSubscriptionRPC, + { common.rpc.sub, param }) + + common.Title("Test") + common.Step("Unexpected disconnect", common.unexpectedDisconnect, { param }) + common.Step("Connect mobile", common.connectMobile) + common.Step("Re-register App resumption data", common.registerAppWithResumption, + { param, appId, isSubscribed }) + common.Step("OnVehicleData with VD param", common.sendOnVehicleData, { param, isExpected }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/010_SubscribeVD_Resumption_of_subscription_Ignition_Cycle.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/010_SubscribeVD_Resumption_of_subscription_Ignition_Cycle.lua new file mode 100644 index 0000000000..5174d384a7 --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/010_SubscribeVD_Resumption_of_subscription_Ignition_Cycle.lua @@ -0,0 +1,44 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL resumes the subscription for parameter after Ignition Cycle +-- +-- In case: +-- 1) App is subscribed to parameter +-- 2) Ignition cycle is performed +-- 3) App re-registered with actual HashId +-- SDL does: +-- a) send SubscribeVehicleData(=true) request to HMI +-- 4) HMI sends SubscribeVehicleData response to SDL +-- SDL does: +-- a) not send SubscribeVehicleData response to mobile app +-- 5) HMI sends valid OnVehicleData notification with parameter data. +-- SDL does: +-- a) process this notification and transfer it to mobile app. +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local appId = 1 +local isSubscribed = true +local isExpected = 1 + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + common.Step("App subscribes to VD param", common.processSubscriptionRPC, + { common.rpc.sub, param }) + + common.Title("Test") + common.Step("Ignition Off", common.ignitionOff, { param }) + common.Step("Ignition On", common.start) + common.Step("Re-register App resumption data", common.registerAppWithResumption, + { param, appId, isSubscribed }) + common.Step("OnVehicleData with VD param", common.sendOnVehicleData, { param, isExpected }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/011_SubscribeVD_Resumption_of_subscription_for_2_apps_Unexpected_Disconnect.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/011_SubscribeVD_Resumption_of_subscription_for_2_apps_Unexpected_Disconnect.lua new file mode 100644 index 0000000000..cb766f4adf --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/011_SubscribeVD_Resumption_of_subscription_for_2_apps_Unexpected_Disconnect.lua @@ -0,0 +1,59 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL resumes the subscription for parameter for two Apps +-- after unexpected disconnect +-- +-- Precondition: +-- 1) Two apps are registered and activated +-- 2) Apps are subscribed to parameter data +-- 3) Unexpected disconnect and reconnect are performed +-- +-- In case: +-- 1) App_1 registers with actual hashID +-- SDL does: +-- a) start data resumption for app +-- b) start to resume the subscription and sends VI.SubscribeVehicleData request to HMI +-- c) after success response from HMI SDL resumes the subscription +-- 2) App_2 registers with actual hashID +-- SDL does: +-- a) start data resumption for app +-- b) resume the subscription internally and not send VI.SubscribeVehicleData request to HMI +-- 3) HMI sends OnVehicleData notification with parameter +-- SDL does: +-- a) resend OnVehicleData notification to both mobile apps +-------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local appId1 = 1 +local appId2 = 2 +local isExpectedSubscribeVDonHMI = true +local notExpectedSubscribeVDonHMI = false +local isExpected = 1 + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App1", common.registerAppWOPTU, { appId1 }) + common.Step("Register App2", common.registerAppWOPTU, { appId2 }) + common.Step("App1 subscribes to VD param", common.processSubscriptionRPC, + { common.rpc.sub, param, appId1, isExpectedSubscribeVDonHMI }) + common.Step("App2 subscribes to VD param", common.processSubscriptionRPC, + { common.rpc.sub, param, appId2, notExpectedSubscribeVDonHMI }) + + common.Title("Test") + common.Step("Unexpected disconnect", common.unexpectedDisconnect, { param }) + common.Step("Connect mobile", common.connectMobile) + common.Step("Re-register App1 resumption data", common.registerAppWithResumption, + { param, appId1, isExpectedSubscribeVDonHMI }) + common.Step("Re-register App2 resumption data", common.registerAppWithResumption, + { param, appId2, notExpectedSubscribeVDonHMI }) + common.Step("OnVehicleData with VD param for both apps", common.sendOnVehicleData, + { param, isExpected }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/SubscribeVehicleData/012_SubscribeVD_Resumption_of_subscription_for_2_apps_Ignition_Cycle.lua b/test_scripts/API/VehicleData/SubscribeVehicleData/012_SubscribeVD_Resumption_of_subscription_for_2_apps_Ignition_Cycle.lua new file mode 100644 index 0000000000..084855a3df --- /dev/null +++ b/test_scripts/API/VehicleData/SubscribeVehicleData/012_SubscribeVD_Resumption_of_subscription_for_2_apps_Ignition_Cycle.lua @@ -0,0 +1,59 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL resumes the subscription for parameter for two Apps +-- after Ignition Cycle +-- +-- Precondition: +-- 1) Two apps are registered and activated +-- 2) Apps are subscribed to parameter data +-- 3) Ignition cycle is performed +-- +-- In case: +-- 1) App_1 registers with actual hashID +-- SDL does: +-- a) start data resumption for app +-- b) start to resume the subscription and sends VI.SubscribeVehicleData request to HMI +-- c) after success response from HMI SDL resumes the subscription +-- 2) App_2 registers with actual hashID +-- SDL does: +-- a) start data resumption for app +-- b) resume the subscription internally and not send VI.SubscribeVehicleData request to HMI +-- 3) HMI sends OnVehicleData notification with parameter +-- SDL does: +-- a) resend OnVehicleData notification to both mobile apps +-------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local appId1 = 1 +local appId2 = 2 +local isExpectedSubscribeVDonHMI = true +local notExpectedSubscribeVDonHMI = false +local isExpected = 1 + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App1", common.registerAppWOPTU, { appId1 }) + common.Step("Register App2", common.registerAppWOPTU, { appId2 }) + common.Step("App1 subscribes to VD param", common.processSubscriptionRPC, + { common.rpc.sub, param, appId1, isExpectedSubscribeVDonHMI }) + common.Step("App2 subscribes to VD param", common.processSubscriptionRPC, + { common.rpc.sub, param, appId2, notExpectedSubscribeVDonHMI }) + + common.Title("Test") + common.Step("Ignition Off", common.ignitionOff, { param }) + common.Step("Ignition On", common.start) + common.Step("Re-register App1 resumption data", common.registerAppWithResumption, + { param, appId1, isExpectedSubscribeVDonHMI }) + common.Step("Re-register App2 resumption data", common.registerAppWithResumption, + { param, appId2, notExpectedSubscribeVDonHMI }) + common.Step("OnVehicleData with VD param for both apps", common.sendOnVehicleData, + { param, isExpected }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/001_Success_flow.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/001_Success_flow.lua deleted file mode 100644 index a99c61698a..0000000000 --- a/test_scripts/API/VehicleData/UnsubscribeVehicleData/001_Success_flow.lua +++ /dev/null @@ -1,44 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case: request is allowed by Policies --- --- Requirement summary: --- [UnsubscribeVehicleData] Mobile app wants to send a request to unsubscribe --- for already subscribed specified parameter --- --- Description: --- In case: --- Mobile application sends valid UnsubscribeVehicleData to SDL --- This request is allowed by Policies and mobile app is subscribed for this parameter --- SDL must: --- Transfer this request to HMI and after successful response from hmi --- Respond SUCCESS, success:true to mobile application ---------------------------------------------------------------------------------------------------- ---[[ Required Shared libraries ]] -local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc_subscribe = "SubscribeVehicleData" -local rpc_unsubscribe = "UnsubscribeVehicleData" --- removed because vin parameter is not applicable for SubscribeVehicleData -common.allVehicleData.vin = nil - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -for vehicleDataName in pairs(common.allVehicleData) do - runner.Step("RPC " .. rpc_subscribe .. " " .. vehicleDataName, common.processRPCSubscriptionSuccess, - {rpc_subscribe, vehicleDataName }) - runner.Step("RPC " .. rpc_unsubscribe .. " " .. vehicleDataName, common.processRPCSubscriptionSuccess, - {rpc_unsubscribe, vehicleDataName }) -end -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/001_UnsubscribeVD_Success.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/001_UnsubscribeVD_Success.lua new file mode 100644 index 0000000000..c22145513b --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/001_UnsubscribeVD_Success.lua @@ -0,0 +1,43 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes UnsubscribeVehicleData RPC with parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered +-- 4) App is subscribed to parameter +-- +-- In case: +-- 1) App sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends VI.UnsubscribeVehicleData response with parameter to SDL +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App +-- Exception: SDL does respond with "INVALID_DATA" in case app tries to unsubscribe from unsubscribable VD parameter +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.unsub, common.processSubscriptionRPC, { common.rpc.unsub, param }) +end + +for param in common.spairs(common.getVDParams(false)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.unsub .. " INVALID_DATA", common.processRPCFailure, + { common.rpc.unsub, param, "INVALID_DATA" }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/002_RPC_parameter_not_yet_subscribed_IGNORED_flow.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/002_RPC_parameter_not_yet_subscribed_IGNORED_flow.lua deleted file mode 100644 index d66dd68576..0000000000 --- a/test_scripts/API/VehicleData/UnsubscribeVehicleData/002_RPC_parameter_not_yet_subscribed_IGNORED_flow.lua +++ /dev/null @@ -1,78 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case: request is allowed by Policies --- --- Requirement summary: --- [UnsubscribeVehicleData] Mobile app wants to send a request to unsubscribe --- for not yet subscribed specified parameter --- --- Description: --- In case: --- Mobile application sends valid UnsubscribeVehicleData to SDL and this request --- is allowed by Policies but app is not yet subscribed for this parameter --- SDL must: --- Respond IGNORED, success:false to mobile application and not transfer this request to HMI ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = { - name = "UnsubscribeVehicleData", - params = { - engineOilLife = true, - fuelRange = true, - tirePressure = true, - electronicParkBrakeStatus = true, - turnSignal = true - } -} - -local vehicleDataResults = { - engineOilLife = { - dataType = "VEHICLEDATA_ENGINEOILLIFE", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - fuelRange = { - dataType = "VEHICLEDATA_FUELRANGE", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - tirePressure = { - dataType = "VEHICLEDATA_TIREPRESSURE", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - electronicParkBrakeStatus = { - dataType = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - turnSignal = { - dataType = "VEHICLEDATA_TURNSIGNAL", - resultCode = "DATA_NOT_SUBSCRIBED" - } -} - ---[[ Local Functions ]] -local function processRPCFailure() - local cid = common.getMobileSession():SendRPC(rpc.name, rpc.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc.name, rpc.params):Times(0) - local responseParams = vehicleDataResults - responseParams.success = false - responseParams.resultCode = "IGNORED" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -common.Step("RPC " .. rpc.name , processRPCFailure) - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/002_UnsubscribeVD_disallowed.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/002_UnsubscribeVD_disallowed.lua new file mode 100644 index 0000000000..98325f166b --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/002_UnsubscribeVD_disallowed.lua @@ -0,0 +1,60 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL rejects UnsubscribeVehicleData request with resultCode "DISALLOWED" +-- if parameter is not allowed by policy +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) parameter is not allowed by policies for UnsubscribeVehicleData RPC +-- 3) App is registered and subscribed to parameter +-- +-- In case: +-- 1) App sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = false, resultCode = "DISALLOWED") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "DISALLOWED" + +--[[ Local Functions ]] +local function getVDGroup(pDisallowedParam) + local all_params = {} + local params = {} + for param in pairs(common.getVDParams(true)) do + if param ~= pDisallowedParam then table.insert(params, param) end + table.insert(all_params, param) + end + return { + rpcs = { + [common.rpc.sub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = all_params + }, + [common.rpc.unsub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + }, + } + } +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions, { getVDGroup(param) }) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + + common.Title("Test") + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.unsub .. " DISALLOWED", common.processRPCFailure, + { common.rpc.unsub, param, result }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/003_RPC_parameter_already_unsubscribed_Result_IGNORED_flow.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/003_RPC_parameter_already_unsubscribed_Result_IGNORED_flow.lua deleted file mode 100644 index b4e7a630a8..0000000000 --- a/test_scripts/API/VehicleData/UnsubscribeVehicleData/003_RPC_parameter_already_unsubscribed_Result_IGNORED_flow.lua +++ /dev/null @@ -1,142 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case: request is allowed by Policies --- --- Requirement summary: --- [UnsubscribeVehicleData] Mobile app wants to send a request to unsubscribe --- for already unsubscribed specified parameter --- --- Description: --- In case: --- 1) Mobile application sends valid UnsubscribeVehicleData to SDL and this request is allowed by Policies --- 2) Mobile app is already unsubscribed from this parameter --- SDL must: --- Respond IGNORED, success:false {dataType = "VEHICLEDATA_engin eOilLife", --- resultCode = "DATA_NOT_SUBSCRIBED"} to mobile application ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc_subscribe = { - name = "SubscribeVehicleData", - params = { - engineOilLife = true, - fuelRange = true, - tirePressure = true, - electronicParkBrakeStatus = true, - turnSignal = true - } -} - -local rpc_unsubscribe = { - name = "UnsubscribeVehicleData", - params = { - engineOilLife = true, - fuelRange = true, - tirePressure = true, - electronicParkBrakeStatus = true, - turnSignal = true - } -} - -local vehicleDataResults = { - engineOilLife = { - dataType = "VEHICLEDATA_ENGINEOILLIFE", - resultCode = "SUCCESS" - }, - fuelRange = { - dataType = "VEHICLEDATA_FUELRANGE", - resultCode = "SUCCESS" - }, - tirePressure = { - dataType = "VEHICLEDATA_TIREPRESSURE", - resultCode = "SUCCESS" - }, - electronicParkBrakeStatus = { - dataType = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", - resultCode = "SUCCESS" - }, - turnSignal = { - dataType = "VEHICLEDATA_TURNSIGNAL", - resultCode = "SUCCESS" - } -} - -local vehicleDataResults2 = { - engineOilLife = { - dataType = "VEHICLEDATA_ENGINEOILLIFE", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - fuelRange = { - dataType = "VEHICLEDATA_FUELRANGE", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - tirePressure = { - dataType = "VEHICLEDATA_TIREPRESSURE", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - electronicParkBrakeStatus = { - dataType = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", - resultCode = "DATA_NOT_SUBSCRIBED" - }, - turnSignal = { - dataType = "VEHICLEDATA_TURNSIGNAL", - resultCode = "DATA_NOT_SUBSCRIBED" - } -} - ---[[ Local Functions ]] -local function processRPCSubscribeSuccess() - local cid = common.getMobileSession():SendRPC(rpc_subscribe.name, rpc_subscribe.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc_subscribe.name, rpc_subscribe.params) - :Do(function(_, data) - common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", - vehicleDataResults) - end) - local responseParams = vehicleDataResults - responseParams.success = true - responseParams.resultCode = "SUCCESS" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - -local function processRPCUnsubscribeSuccess() - local cid = common.getMobileSession():SendRPC(rpc_unsubscribe.name, rpc_unsubscribe.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc_unsubscribe.name, rpc_unsubscribe.params) - :Do(function(_, data) - common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", - vehicleDataResults) - end) - local responseParams = vehicleDataResults - responseParams.success = true - responseParams.resultCode = "SUCCESS" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - -local function processRPCUnsubscribeIgnored() - local cid = common.getMobileSession():SendRPC(rpc_unsubscribe.name, rpc_unsubscribe.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc_unsubscribe.name, rpc_unsubscribe.params):Times(0) - local responseParams = vehicleDataResults2 - responseParams.success = false - responseParams.resultCode = "IGNORED" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdate }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -common.Step("RPC " .. rpc_subscribe.name, processRPCSubscribeSuccess) -common.Step("RPC " .. rpc_unsubscribe.name, processRPCUnsubscribeSuccess) -common.Title("Trying to unsubscribe from already unsubscribed parameter...") -common.Step("RPC " .. rpc_unsubscribe.name, processRPCUnsubscribeIgnored) - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/003_UnsubscribeVD_disallowed_after_PTU.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/003_UnsubscribeVD_disallowed_after_PTU.lua new file mode 100644 index 0000000000..7868af5c9c --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/003_UnsubscribeVD_disallowed_after_PTU.lua @@ -0,0 +1,82 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL rejects UnsubscribeVehicleData request with resultCode "DISALLOWED" +-- if parameter is not allowed by policy after PTU +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered and subscribed to data +-- +-- In case: +-- 1) App sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends VI.UnsubscribeVehicleData response with data to SDL +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App +-- 3) App is subscribed to data again +-- 4) PTU is performed with disabling permissions for parameter +-- 5) App sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = false, resultCode = "DISALLOWED") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "DISALLOWED" + +--[[ Local Function ]] +local function getVDGroup(pDisallowedParam) + local all_params = {} + local params = {} + for param in pairs(common.getVDParams(true)) do + if param ~= pDisallowedParam then table.insert(params, param) end + table.insert(all_params, param) + end + return { + rpcs = { + [common.rpc.sub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = all_params + }, + [common.rpc.unsub] = { + hmi_levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" }, + parameters = params + }, + } + } +end + +local function policyTableUpdate(pDisallowedParam) + local function ptUpdate(pt) + pt.policy_table.functional_groupings["NewTestCaseGroup"] = getVDGroup(pDisallowedParam) + pt.policy_table.app_policies[common.getAppParams().fullAppID].groups = { "Base-4", "NewTestCaseGroup" } + end + common.policyTableUpdate(ptUpdate) +end + +--[[ Scenario ]] +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Title("Preconditions") + common.Step("Clean environment and update preloaded_pt file", common.preconditions) + common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) + common.Step("Register App", common.registerApp) + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.unsub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.unsub, param }) + + common.Title("Test") + common.Step("PTU with disabling permissions for VD parameter", policyTableUpdate, { param }) + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.unsub .. " DISALLOWED after PTU", common.processRPCFailure, + { common.rpc.unsub, result }) + + common.Title("Postconditions") + common.Step("Stop SDL", common.postconditions) +end diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/004_RPC_parameter_disallowed_by_policies_Result_DISALLOWED_flow.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/004_RPC_parameter_disallowed_by_policies_Result_DISALLOWED_flow.lua deleted file mode 100644 index b4c154234b..0000000000 --- a/test_scripts/API/VehicleData/UnsubscribeVehicleData/004_RPC_parameter_disallowed_by_policies_Result_DISALLOWED_flow.lua +++ /dev/null @@ -1,77 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- User story: TO ADD !!! --- Use case: TO ADD !!! --- Item: Use Case: request is allowed but parameter of this request is NOT allowed by Policies --- --- Requirement summary: --- [UnsubscribeVehicleData] Mobile app wants to send a request to unsubscribe --- from specified parameter but parameter is disallowed by Policies --- Description: --- In case: --- 1) mobile application sends valid UnsubscribeVehicleData to SDL and this request is --- allowed by Policies but RPC parameter is not allowed --- SDL must: --- 1) SDL responds DISALLOWED, success:false to mobile application and doesn't transfer this request to HMI ---------------------------------------------------------------------------------------------------- - ---[[ Required Shared libraries ]] -local common = require('test_scripts/API/VehicleData/commonVehicleData') - ---[[ Local Variables ]] -local rpc = { - name = "UnsubscribeVehicleData", - params = { - engineOilLife = true, - fuelRange = true, - tirePressure = true, - electronicParkBrakeStatus = true, - turnSignal = true - } -} - -local vehicleDataResults = { - engineOilLife = { - dataType = "VEHICLEDATA_ENGINEOILLIFE", - resultCode = "DISALLOWED" - }, - fuelRange = { - dataType = "VEHICLEDATA_FUELRANGE", - resultCode = "DISALLOWED" - }, - tirePressure = { - dataType = "VEHICLEDATA_TIREPRESSURE", - resultCode = "DISALLOWED" - }, - electronicParkBrakeStatus = { - dataType = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", - resultCode = "DISALLOWED" - }, - turnSignal = { - dataType = "VEHICLEDATA_TURNSIGNAL", - resultCode = "DISALLOWED" - } -} - ---[[ Local Functions ]] -local function processRPCFailure() - local cid = common.getMobileSession():SendRPC(rpc.name, rpc.params) - common.getHMIConnection():ExpectRequest("VehicleInfo." .. rpc.name, rpc.params):Times(0) - local responseParams = vehicleDataResults - responseParams.success = false - responseParams.resultCode = "DISALLOWED" - common.getMobileSession():ExpectResponse(cid, responseParams) -end - ---[[ Scenario ]] -common.Title("Preconditions") -common.Step("Clean environment", common.preconditions) -common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) -common.Step("RAI", common.registerApp) -common.Step("PTU", common.policyTableUpdate, { common.ptUpdateMin }) -common.Step("Activate App", common.activateApp) - -common.Title("Test") -common.Step("RPC " .. rpc.name , processRPCFailure) - -common.Title("Postconditions") -common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/004_UnsubscribeVD_HMI_responds_with_invalid_data.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/004_UnsubscribeVD_HMI_responds_with_invalid_data.lua new file mode 100644 index 0000000000..74d095fe0e --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/004_UnsubscribeVD_HMI_responds_with_invalid_data.lua @@ -0,0 +1,48 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "GENERIC_ERROR" to UnsubscribeVehicleData request +-- if HMI response for parameter is invalid +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered and subscribed to data +-- +-- In case: +-- 1) App sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 2) HMI sends invalid response for parameter +-- SDL does: +-- - a) ignore this response +-- - b) send UnsubscribeVehicleData response with (success = false, resultCode = "GENERIC_ERROR") to App +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Functions ]] +local function getInvalidData(pParam) + return { + wrongDataType = { dataType = "UNKNOWN", resultCode = "SUCCESS" }, + wrongResultCode = { dataType = common.vd[pParam], resultCode = "UNKNOWN" } + } +end + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.sub, param }) + for caseName, value in common.spairs(getInvalidData(param)) do + common.Step("RPC " .. common.rpc.unsub .. " invalid HMI response " .. caseName, + common.processRPCgenericError, { common.rpc.unsub, param, value }) + end +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/005_UnsubscribeVD_App_sends_invalid_request.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/005_UnsubscribeVD_App_sends_invalid_request.lua new file mode 100644 index 0000000000..dab8821c18 --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/005_UnsubscribeVD_App_sends_invalid_request.lua @@ -0,0 +1,39 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "INVALID_DATA" to UnsubscribeVehicleData request +-- if App sends request with invalid data for parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered and subscribed to parameter +-- +-- In case: +-- 1) App sends invalid UnsubscribeVehicleData(=123) request to SDL +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = false, resultCode = "INVALID_DATA") to App +-- - b) not transfer this request to HMI +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "INVALID_DATA" +local value = 123 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.sub, param }) + common.Step("RPC " .. common.rpc.unsub .. " invalid App request", + common.processRPCFailure, { common.rpc.unsub, param, result, value }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/006_UnsubscribeVD_2nd_request_IGNORED.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/006_UnsubscribeVD_2nd_request_IGNORED.lua new file mode 100644 index 0000000000..5c5555731e --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/006_UnsubscribeVD_2nd_request_IGNORED.lua @@ -0,0 +1,52 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL responds with resultCode "IGNORED" to 2nd UnsubscribeVehicleData request +-- with prameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData RPC and parameter are allowed by policies +-- 3) App is registered and subscribed to parameter +-- +-- In case: +-- 1) App sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) process request successfully +-- 2) App sends valid UnsubscribeVehicleData(=true) request to SDL 2nd time +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = false, resultCode = "IGNORED") to App +-- - b) not transfer this request to HMI +-- Exception: SDL does respond with "INVALID_DATA" in case app tries to unsubscribe from unsubscribable VD parameter +--------------------------------------------------------------------------------------------------- + +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local result = "IGNORED" + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.sub, param }) + common.Step("RPC 1 " .. common.rpc.unsub .. " SUCCESS", common.processSubscriptionRPC, + { common.rpc.unsub, param }) + common.Step("RPC 2 " .. common.rpc.unsub .. " IGNORED", common.processRPCFailure, + { common.rpc.unsub, param, result }) +end +for param in common.spairs(common.getVDParams(false)) do + common.Title("VD parameter: " .. param) + common.Step("RPC 1 " .. common.rpc.unsub .. " INVALID_DATA", common.processRPCFailure, + { common.rpc.unsub, param, "INVALID_DATA" }) + common.Step("RPC 2 " .. common.rpc.unsub .. " INVALID_DATA", common.processRPCFailure, + { common.rpc.unsub, param, "INVALID_DATA" }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/007_UnsubscribeVD_for_2_apps.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/007_UnsubscribeVD_for_2_apps.lua new file mode 100644 index 0000000000..5a2670a3e7 --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/007_UnsubscribeVD_for_2_apps.lua @@ -0,0 +1,61 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check that SDL processes UnsubscribeVehicleData RPC for two Apps with parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData RPCs and parameter are allowed by policies +-- 3) App_1 and App_2 are registered and subscribed to data +-- +-- In case: +-- 1) App_1 sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App_1 +-- - b) not transfer this request to HMI +-- 2) App_2 sends valid UnsubscribeVehicleData(=true) request to SDL +-- SDL does: +-- - a) transfer this request to HMI +-- 3) HMI sends VI.UnsubscribeVehicleData response with data to SDL +-- SDL does: +-- - a) send UnsubscribeVehicleData response with (success = true, resultCode = "SUCCESS", +-- = ) to App_2 +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local appId_1 = 1 +local appId_2 = 2 +local isExpectedSubscribeVDonHMI = true +local isNotExpectedSubscribeVDonHMI = false +local isNotExpected = 0 +local isExpected = 1 + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App_1", common.registerApp, { appId_1 }) +common.Step("Register App_2", common.registerAppWOPTU, { appId_2 }) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub .. " for App_1", + common.processSubscriptionRPC, { common.rpc.sub, param, appId_1, isExpectedSubscribeVDonHMI }) + common.Step("RPC " .. common.rpc.sub .. " for App_2", + common.processSubscriptionRPC, { common.rpc.sub, param, appId_2, isNotExpectedSubscribeVDonHMI }) + common.Step("OnVehicleData for both apps", + common.sendOnVehicleDataTwoApps, { param, isExpected, isExpected }) + common.Step("RPC " .. common.rpc.unsub .. " for App_1", + common.processSubscriptionRPC, { common.rpc.unsub, param, appId_1, isNotExpectedSubscribeVDonHMI }) + common.Step("Absence of OnVehicleData for App_1", + common.sendOnVehicleDataTwoApps, { param, isNotExpected, isExpected }) + common.Step("RPC " .. common.rpc.unsub .. " for App_2", + common.processSubscriptionRPC, { common.rpc.unsub, param, appId_2, isExpectedSubscribeVDonHMI }) + common.Step("Absence of OnVehicleData for both apps", + common.sendOnVehicleDataTwoApps, { param, isNotExpected, isNotExpected }) +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/UnsubscribeVehicleData/008_UnsubscribeVD_HMI_responds_with_not_success_codes.lua b/test_scripts/API/VehicleData/UnsubscribeVehicleData/008_UnsubscribeVD_HMI_responds_with_not_success_codes.lua new file mode 100644 index 0000000000..8c0cce9673 --- /dev/null +++ b/test_scripts/API/VehicleData/UnsubscribeVehicleData/008_UnsubscribeVD_HMI_responds_with_not_success_codes.lua @@ -0,0 +1,64 @@ +--------------------------------------------------------------------------------------------------- +-- Description: Check Processing of UnsubscribeVehicleData request +-- if HMI respond with unsuccessful resultCode for parameter +-- +-- Preconditions: +-- 1) SDL and HMI are started +-- 2) SubscribeVehicleData, UnsubscribeVehicleData RPCs and parameter are allowed by policies +-- 3) App is registered +-- 4) App is subscribed to data +-- +-- In case: +-- 1) App sends UnsubscribeVehicleData(=true) request to the SDL +-- SDL does: +-- a) transfer this request to HMI. +-- 2) HMI responds with "SUCCESS" result to UnsubscribeVehicleData request +-- and with not success result for vehicle data +-- SDL does: +-- a) respond "GENERIC_ERROR", success:false and with unsuccessful resultCode for data to the mobile app +-- Note: expected behavior is under clarification in https://github.com/smartdevicelink/sdl_core/issues/3384 +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local common = require('test_scripts/API/VehicleData/common') + +--[[ Local Variables ]] +local resultCodes = { + "TRUNCATED_DATA", + "DISALLOWED", + "USER_DISALLOWED", + "INVALID_ID", + "VEHICLE_DATA_NOT_AVAILABLE", + "DATA_NOT_SUBSCRIBED", + "IGNORED", + "DATA_ALREADY_SUBSCRIBED" +} + +--[[ Local Functions ]] +local function unsubscribeVDwithUnsuccessCodeForVD(pParam, pCode) + local response = { dataType = common.vd[pParam], resultCode = pCode} + local cid = common.getMobileSession():SendRPC("UnsubscribeVehicleData", { [pParam] = true }) + common.getHMIConnection():ExpectRequest("VehicleInfo.UnsubscribeVehicleData", { [pParam] = true }) + :Do(function(_,data) + common.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { [pParam] = response }) + end) + common.getMobileSession():ExpectResponse(cid, { success = false, resultCode = "GENERIC_ERROR", [pParam] = response }) +end + +--[[ Scenario ]] +common.Title("Preconditions") +common.Step("Clean environment and update preloaded_pt file", common.preconditions) +common.Step("Start SDL, HMI, connect Mobile, start Session", common.start) +common.Step("Register App", common.registerApp) + +common.Title("Test") +for param in common.spairs(common.getVDParams(true)) do + common.Title("VD parameter: " .. param) + common.Step("RPC " .. common.rpc.sub, common.processSubscriptionRPC, { common.rpc.sub, param }) + for _, code in common.spairs(resultCodes) do + common.Step("RPC " .. common.rpc.unsub .. " resultCode " .. code, + unsubscribeVDwithUnsuccessCodeForVD, { param, code }) + end +end + +common.Title("Postconditions") +common.Step("Stop SDL", common.postconditions) diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/001_VD_parameter_in_API_DB_app_version_more_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/001_VD_parameter_in_API_DB_app_version_more_then_parameter_version.lua index e7e38c3b8e..5ef0cebbcf 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/001_VD_parameter_in_API_DB_app_version_more_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/001_VD_parameter_in_API_DB_app_version_more_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/002_VD_parameter_in_API_DB_app_version_equal_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/002_VD_parameter_in_API_DB_app_version_equal_parameter_version.lua index 51bf8f6952..30630e65fa 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/002_VD_parameter_in_API_DB_app_version_equal_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/002_VD_parameter_in_API_DB_app_version_equal_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/003_VD_parameter_in_API_DB_app_version_less_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/003_VD_parameter_in_API_DB_app_version_less_then_parameter_version.lua index 65391cf4bd..5d49e9f2a7 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/003_VD_parameter_in_API_DB_app_version_less_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/003_VD_parameter_in_API_DB_app_version_less_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/004_VD_parameter_in_API_DB_different_values_app_version_more_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/004_VD_parameter_in_API_DB_different_values_app_version_more_then_parameter_version.lua index 919e07aa07..bf1a7c2d5b 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/004_VD_parameter_in_API_DB_different_values_app_version_more_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/004_VD_parameter_in_API_DB_different_values_app_version_more_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/005_VD_parameter_in_API_DB_different_values_version_in_DB_more_then_version_of_API_app_version_more_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/005_VD_parameter_in_API_DB_different_values_version_in_DB_more_then_version_of_API_app_version_more_then_parameter_version.lua index 77793ac323..c19f1d66b5 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/005_VD_parameter_in_API_DB_different_values_version_in_DB_more_then_version_of_API_app_version_more_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/005_VD_parameter_in_API_DB_different_values_version_in_DB_more_then_version_of_API_app_version_more_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/006_VD_parameter_DB_app_version_more_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/006_VD_parameter_DB_app_version_more_then_parameter_version.lua index e3bc09ef29..a1932f5663 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/006_VD_parameter_DB_app_version_more_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/006_VD_parameter_DB_app_version_more_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/007_VD_parameter_DB_app_version_equal_to_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/007_VD_parameter_DB_app_version_equal_to_parameter_version.lua index 88d81944f2..dd33882c56 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/007_VD_parameter_DB_app_version_equal_to_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/007_VD_parameter_DB_app_version_equal_to_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/008_VD_parameter_DB_app_version_less_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/008_VD_parameter_DB_app_version_less_then_parameter_version.lua index 24fdff4246..cd35b12e15 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/008_VD_parameter_DB_app_version_less_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/008_VD_parameter_DB_app_version_less_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/009_VD_parameter_DB_version_more_then_API_app_version_more_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/009_VD_parameter_DB_version_more_then_API_app_version_more_then_parameter_version.lua index ac5a57cea0..62bb512d70 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/009_VD_parameter_DB_version_more_then_API_app_version_more_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/009_VD_parameter_DB_version_more_then_API_app_version_more_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/010_VD_parameter_in_API_app_version_more_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/010_VD_parameter_in_API_app_version_more_then_parameter_version.lua index 4203aef988..70533be55a 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/010_VD_parameter_in_API_app_version_more_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/010_VD_parameter_in_API_app_version_more_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/011_VD_parameter_in_API_app_version_equal_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/011_VD_parameter_in_API_app_version_equal_parameter_version.lua index 66a3577001..e2344ebd4d 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/011_VD_parameter_in_API_app_version_equal_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/011_VD_parameter_in_API_app_version_equal_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/012_VD_parameter_in_API_app_version_less_then_parameter_version.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/012_VD_parameter_in_API_app_version_less_then_parameter_version.lua index 0ca75109e2..54f8241737 100644 --- a/test_scripts/API/VehicleData/VehicleDataVersioning/012_VD_parameter_in_API_app_version_less_then_parameter_version.lua +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/012_VD_parameter_in_API_app_version_less_then_parameter_version.lua @@ -12,7 +12,7 @@ --[[ Required Shared libraries ]] local runner = require('user_modules/script_runner') -local common = require('test_scripts/API/VehicleData/commonVehicleData') +local common = require('test_scripts/API/VehicleData/VehicleDataVersioning/common') --[[ Test Configuration ]] runner.testSettings.isSelfIncluded = false diff --git a/test_scripts/API/VehicleData/VehicleDataVersioning/common.lua b/test_scripts/API/VehicleData/VehicleDataVersioning/common.lua new file mode 100644 index 0000000000..a8b9e73dd3 --- /dev/null +++ b/test_scripts/API/VehicleData/VehicleDataVersioning/common.lua @@ -0,0 +1,53 @@ +--------------------------------------------------------------------------------------------------- +-- Common module +--------------------------------------------------------------------------------------------------- +--[[ Module ]] +local m = require('test_scripts/API/VehicleData/common') + +function m.processGetVDsuccess(pData) + local reqParams = { + [pData] = true + } + local hmiResParams = { + [pData] = m.vdValues[pData] + } + local cid = m.getMobileSession():SendRPC("GetVehicleData", reqParams) + m.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", reqParams) + :Do(function(_, data) + m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", hmiResParams) + end) + local mobResParams = m.cloneTable(hmiResParams) + mobResParams.success = true + mobResParams.resultCode = "SUCCESS" + m.getMobileSession():ExpectResponse(cid, mobResParams) +end + +function m.processGetVDunsuccess(pData) + local reqParams = { + [pData] = true + } + local cid = m.getMobileSession():SendRPC("GetVehicleData", reqParams) + m.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", reqParams) :Times(0) + m.getMobileSession():ExpectResponse(cid, { resultCode = "INVALID_DATA", success = false }) +end + +function m.processGetVDwithCustomDataSuccess() + local cid = m.getMobileSession():SendRPC("GetVehicleData", { custom_vd_item1_integer = true }) + m.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", { OEM_REF_INT = true }) + :Do(function(_, data) + m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { OEM_REF_INT = 10 }) + end) + local mobResParams = { custom_vd_item1_integer = 10 } + mobResParams.success = true + mobResParams.resultCode = "SUCCESS" + m.getMobileSession():ExpectResponse(cid, mobResParams) +end + +function m.updatePreloadedFile(pUpdateFunc) + local pt = m.getPreloadedPT() + pt.policy_table.functional_groupings["DataConsent-2"].rpcs = m.json.null + pUpdateFunc(pt) + m.setPreloadedPT(pt) +end + +return m diff --git a/test_scripts/API/VehicleData/common.lua b/test_scripts/API/VehicleData/common.lua new file mode 100644 index 0000000000..c175700fe1 --- /dev/null +++ b/test_scripts/API/VehicleData/common.lua @@ -0,0 +1,628 @@ +--------------------------------------------------------------------------------------------------- +-- Common module +--------------------------------------------------------------------------------------------------- +--[[ Required Shared libraries ]] +local actions = require("user_modules/sequences/actions") +local runner = require('user_modules/script_runner') +local utils = require("user_modules/utils") +local json = require("modules/json") +local SDL = require("SDL") +local apiLoader = require("modules/api_loader") +local color = require("user_modules/consts").color + +--[[ General configuration parameters ]] +runner.testSettings.isSelfIncluded = false +config.defaultProtocolVersion = 2 + +--[[ Local Variables ]] +local m = {} +local hashId = {} +local api = { + hmi = apiLoader.init("data/HMI_API.xml"), + mob = apiLoader.init("data/MOBILE_API.xml") +} + +--[[ Common Proxy Functions ]] +do + m.Title = runner.Title + m.Step = runner.Step + m.getPreloadedPT = actions.sdl.getPreloadedPT + m.setPreloadedPT = actions.sdl.setPreloadedPT + m.registerApp = actions.app.register + m.registerAppWOPTU = actions.app.registerNoPTU + m.activateApp = actions.app.activate + m.getMobileSession = actions.getMobileSession + m.getHMIConnection = actions.hmi.getConnection + m.getAppParams = actions.app.getParams + m.getConfigAppParams = actions.app.getParams + m.cloneTable = utils.cloneTable + m.start = actions.start + m.postconditions = actions.postconditions + m.policyTableUpdate = actions.policyTableUpdate + m.connectMobile = actions.mobile.connect + m.wait = utils.wait + m.spairs = utils.spairs + m.cprint = utils.cprint + m.json = actions.json +end + +--[[ Common Variables ]] +m.rpc = { + get = "GetVehicleData", + sub = "SubscribeVehicleData", + unsub = "UnsubscribeVehicleData", + on = "OnVehicleData" +} + +m.vd = { + vin = "", + gps = "VEHICLEDATA_GPS", + speed = "VEHICLEDATA_SPEED", + rpm = "VEHICLEDATA_RPM", + fuelLevel = "VEHICLEDATA_FUELLEVEL", + fuelLevel_State = "VEHICLEDATA_FUELLEVEL_STATE", + instantFuelConsumption = "VEHICLEDATA_FUELCONSUMPTION", + externalTemperature = "VEHICLEDATA_EXTERNTEMP", + prndl = "VEHICLEDATA_PRNDL", + tirePressure = "VEHICLEDATA_TIREPRESSURE", + odometer = "VEHICLEDATA_ODOMETER", + beltStatus = "VEHICLEDATA_BELTSTATUS", + bodyInformation = "VEHICLEDATA_BODYINFO", + deviceStatus = "VEHICLEDATA_DEVICESTATUS", + eCallInfo = "VEHICLEDATA_ECALLINFO", + airbagStatus = "VEHICLEDATA_AIRBAGSTATUS", + emergencyEvent = "VEHICLEDATA_EMERGENCYEVENT", + -- clusterModeStatus = "VEHICLEDATA_CLUSTERMODESTATUS", -- disabled due to issue: https://github.com/smartdevicelink/sdl_core/issues/3460 + myKey = "VEHICLEDATA_MYKEY", + driverBraking = "VEHICLEDATA_BRAKING", + wiperStatus = "VEHICLEDATA_WIPERSTATUS", + headLampStatus = "VEHICLEDATA_HEADLAMPSTATUS", + engineTorque = "VEHICLEDATA_ENGINETORQUE", + accPedalPosition = "VEHICLEDATA_ACCPEDAL", + steeringWheelAngle = "VEHICLEDATA_STEERINGWHEEL", + turnSignal = "VEHICLEDATA_TURNSIGNAL", + fuelRange = "VEHICLEDATA_FUELRANGE", + engineOilLife = "VEHICLEDATA_ENGINEOILLIFE", + electronicParkBrakeStatus = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS", + cloudAppVehicleID = "VEHICLEDATA_CLOUDAPPVEHICLEID", + handsOffSteering = "VEHICLEDATA_HANDSOFFSTEERING", + windowStatus = "VEHICLEDATA_WINDOWSTATUS", + gearStatus = "VEHICLEDATA_GEARSTATUS", + stabilityControlsStatus = "VEHICLEDATA_STABILITYCONTROLSSTATUS" +} + +m.operator = { + increase = 1, + decrease = -1 +} + +--[[ API Functions ]] + +math.randomseed(os.clock()) + +--[[ @split: Split input string by '.' into a few sub-strings +--! @parameters: +--! pStr: input string +--! @return: table with sub-strings +--]] +local function split(pStr) + local result = {} + for match in (pStr.."."):gmatch("(.-)%.") do + if string.len(match) > 0 then table.insert(result, match) end + end + return result +end + +--[[ @getParamValues: Generate VD parameter values bases on restrictions in API +-- Function iterates through all structs recursively +--! @parameters: +--! pParams: table with parameters +--! pCmnSchema: table with data representation of 'Common' interface +--! @return: table with VD parameters and values +--]] +function m.getParamValues(pParams, pCmnSchema) + local function getTypeValue(pData) + local itype = split(pData.type)[2] + local function getSimpleValue() + local tp = pData.type + local min = 1 + local max = 30 + -- set min/max restrictions + if tp == "Float" or tp == "Integer" then + if pData.minvalue ~= nil then min = pData.minvalue end + if pData.maxvalue ~= nil then max = pData.maxvalue end + end + if tp == "String" then + if pData.minlength ~= nil then min = pData.minlength end + if pData.maxlength ~= nil then max = pData.maxlength end + end + -- generate random value + if tp == "Boolean" then + return math.random(0, 1) == 1 + end + if tp == "Float" then + return tonumber(string.format('%.02f', math.random() + math.random(min, max-1))) + end + if tp == "Integer" then + return math.random(min, max) + end + if tp == "String" then + local length = math.random(min, max) + local res = "" + for _ = 1, length do + res = res .. string.char(math.random(97, 122)) -- [a-z] characters + end + return res + end + end + local function getEnumValue() + local data = {} + for k in m.spairs(pCmnSchema.enum[itype]) do + table.insert(data, k) + end + return data[math.random(1, #data)] + end + local function getStructValue() + return m.getParamValues(pCmnSchema.struct[itype].param, pCmnSchema) + end + if pCmnSchema.struct[itype] ~= nil then + return getStructValue() + elseif pCmnSchema.enum[itype] ~= nil then + return getEnumValue() + else + return getSimpleValue() + end + end + local function getArrayTypeValue(pData) + local min = 1 + local max = 5 + if pData.minsize ~= nil and pData.minsize > min then min = pData.minsize end + if pData.maxsize ~= nil and pData.maxsize < max then max = pData.maxsize end + local numOfItems = math.random(min, max) + local out = {} + for _ = 1, numOfItems do + table.insert(out, getTypeValue(pData, pCmnSchema)) + end + return out + end + local out = {} + for k, v in pairs(pParams) do + if v.array == false then + out[k] = getTypeValue(v) + else + out[k] = getArrayTypeValue(v) + end + end + return out +end + +--[[ @getParamValuesFromAPI: Generate VD parameter values bases on restrictions in API +-- This is a wrapper for 'm.getParamValues()' function +--! @parameters: +--! @return: table with VD parameters and values +--]] +local function getParamValuesFromAPI() + local viSchema = api.hmi.interface["VehicleInfo"] + local cmnSchema = api.hmi.interface["Common"] + local params = viSchema.type.response.functions.GetVehicleData.param + local paramValues = m.getParamValues(params, cmnSchema) + -- print not defined in API parameters + for k in pairs(m.vd) do + if not paramValues[k] then + m.cprint(color.magenta, "Not found in API VD parameter:", k) + end + end + -- remove disabled parameters + for k in pairs(paramValues) do + if not m.vd[k] then + paramValues[k] = nil + m.cprint(color.magenta, "Disabled VD parameter:", k) + end + end + return paramValues +end + +m.vdValues = getParamValuesFromAPI() + +--[[ @getMandatoryParamsFromAPI: Return VD parameters and values which has mandatory sub-parameters defined in API +--! @parameters: +--! @return: table with VD parameters and values +--]] +local function getMandatoryParamsFromAPI() + local out = {} + local viSchema = api.hmi.interface["VehicleInfo"] + local cmnSchema = api.hmi.interface["Common"] + local params = viSchema.type.response.functions.GetVehicleData.param + for k, v in pairs(params) do + local iface = split(v.type)[1] + local itype = split(v.type)[2] + if iface == "Common" then + if cmnSchema.struct[itype] ~= nil then + for k2, v2 in pairs(cmnSchema.struct[itype].param) do + if v2.mandatory == "true" and m.vd[k] then + if out[k] == nil then out[k] = { sub = {}, array = false } end + if v.array == "true" then out[k].array = true end + table.insert(out[k].sub, k2) + end + end + end + end + end + return out +end + +m.mandatoryVD = getMandatoryParamsFromAPI() + +--[[ @getVersioningParamsFromAPI: Return VD parameters and values which has version defined in API +--! @parameters: +--! @return: table with VD parameters and values +--]] +local function getVersioningParamsFromAPI() + local out = {} + local schema = api.mob.interface[next(api.mob.interface)] + local params = schema.type.request.functions.GetVehicleData.param + for k, v in pairs(params) do + if v.since ~= nil and m.vd[k] and v.deprecated ~= "true" then out[k] = v.since end + end + return out +end + +m.versioningVD = getVersioningParamsFromAPI() + +--[[ Common Functions ]] + +--[[ @updatePreloadedPTFile: Update preloaded file with additional permissions +--! @parameters: +--! pGroup: table with additional updates (optional) +--! @return: none +--]] +local function updatePreloadedPTFile(pGroup) + local params = { } + for param in pairs(m.vd) do + table.insert(params, param) + end + local rpcs = { "GetVehicleData", "OnVehicleData", "SubscribeVehicleData", "UnsubscribeVehicleData" } + local levels = { "NONE", "BACKGROUND", "LIMITED", "FULL" } + local pt = actions.sdl.getPreloadedPT() + if not pGroup then + pGroup = { + rpcs = {} + } + for _, rpc in pairs(rpcs) do + pGroup.rpcs[rpc] = { + hmi_levels = levels, + parameters = params + } + end + end + pt.policy_table.functional_groupings["VDGroup"] = pGroup + pt.policy_table.app_policies["default"].groups = { "Base-4", "VDGroup" } + pt.policy_table.functional_groupings["DataConsent-2"].rpcs = json.null + actions.sdl.setPreloadedPT(pt) +end + +--[[ @preconditions: Clean environment, optional backup and update of sdl_preloaded_pt.json file +--! @parameters: +--! pGroup: data for updating sdl_preloaded_pt.json file +--! @return: none +--]] +function m.preconditions(pGroup) + actions.preconditions() + updatePreloadedPTFile(pGroup) +end + +--[[ @setHashId: Set hashId value which is required during resumption +--! @parameters: +--! pHashValue: application hashId +--! pAppId: application number (1, 2, etc.) +--! @return: none +--]] +function m.setHashId(pHashValue, pAppId) + hashId[pAppId] = pHashValue +end + +--[[ @getHashId: Get hashId value of an app which is required during resumption +--! @parameters: +--! pAppId: application number (1, 2, etc.) +--! @return: app's hashId +--]] +function m.getHashId(pAppId) + return hashId[pAppId] +end + +--[[ @getVDParams: Return VD parameters and values +--! @parameters: +--! pIsSubscribable: true if parameter is available for subscription, otherwise - false +--! @return: table with VD parameters and values +--]] +function m.getVDParams(pIsSubscribable) + if pIsSubscribable == nil then return m.vdValues end + local out = {} + for param in pairs(m.vd) do + if pIsSubscribable == (m.vd[param] ~= "") then out[param] = m.vdValues[param] end + end + return out +end + +--[[ @getMandatoryOnlyCases: Return cases for VD parameter where only mandatory sub-parameters are defined +--! @parameters: +--! pParam: name of the VD parameter +--! @return: table with test cases where key is name of test case and value is VD parameter with value +--]] +function m.getMandatoryOnlyCases(pParam) + local out = {} + local value = utils.cloneTable(m.vdValues[pParam]) + local mnd = m.mandatoryVD[pParam] + local to_upd = value + if mnd.array then + value = { value[1] } + to_upd = value[1] + end + for k in pairs(to_upd) do + if not utils.isTableContains(mnd.sub, k) then + to_upd[k] = nil + end + end + out["mandatory"] = value + return out +end + +--[[ @getMandatoryMissingCases: Return cases for VD parameter where one mandatory sub-parameter is missing +--! @parameters: +--! pParam: name of the VD parameter +--! @return: table with test cases where key is name of test case and value is VD parameter with value +--]] +function m.getMandatoryMissingCases(pParam) + local out = {} + local mnd = m.mandatoryVD[pParam] + for _, k in pairs(mnd.sub) do + local value = utils.cloneTable(m.vdValues[pParam]) + local to_upd = value + if mnd.array then + value = { value[1] } + to_upd = value[1] + end + for j in pairs(to_upd) do + if j == k then to_upd[k] = nil end + end + out["missing_" .. k] = value + end + return out +end + +--[[ @getVehicleData: Successful processing of GetVehicleData RPC +--! @parameters: +--! pParam: name of the VD parameter +--! pValue: data for HMI response +--! @return: none +--]] +function m.getVehicleData(pParam, pValue) + if pValue == nil then pValue = m.vdValues[pParam] end + local cid = m.getMobileSession():SendRPC("GetVehicleData", { [pParam] = true }) + m.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", { [pParam] = true }) + :Do(function(_, data) + m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { [pParam] = pValue }) + end) + m.getMobileSession():ExpectResponse(cid, + { success = true, resultCode = "SUCCESS", [pParam] = pValue }) +end + +--[[ @processRPCFailure: Processing VehicleData RPC with ERROR resultCode +--! @parameters: +--! pRPC: RPC for mobile request +--! pParam: name of the VD parameter +--! pResult: expected result code +--! pRequestValue: data for App request +--! @return: none +--]] +function m.processRPCFailure(pRPC, pParam, pResult, pRequestValue) + if pRequestValue == nil then pRequestValue = true end + local cid = m.getMobileSession():SendRPC(pRPC, { [pParam] = pRequestValue }) + m.getHMIConnection():ExpectRequest("VehicleInfo." .. pRPC):Times(0) + m.getMobileSession():ExpectResponse(cid, { success = false, resultCode = pResult }) +end + +--[[ @processRPCgenericError: Processing VehicleData RPC with invalid HMI response +--! @parameters: +--! pRPC: RPC for mobile request +--! pParam: name of the VD parameter +--! pValue: data for HMI response +--! @return: none +--]] +function m.processRPCgenericError(pRPC, pParam, pValue) + local cid = m.getMobileSession():SendRPC(pRPC, { [pParam] = true }) + m.getHMIConnection():ExpectRequest("VehicleInfo." .. pRPC, { [pParam] = true }) + :Do(function(_,data) + m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { [pParam] = pValue }) + end) + m.getMobileSession():ExpectResponse(cid, { success = false, resultCode = "GENERIC_ERROR" }) +end + +--[[ @getInvalidData: Return invalid value bases on valid one +--! @parameters: +--! pData: valid value +--! @return: invalid value +--]] +function m.getInvalidData(pData) + if type(pData) == "boolean" then return 123 end + if type(pData) == "number" then return true end + if type(pData) == "string" then return false end + if type(pData) == "table" then + for k, v in pairs(pData) do + pData[k] = m.getInvalidData(v) + end + return pData + end +end + +--[[ @processSubscriptionRPC: Processing SubscribeVehicleData and UnsubscribeVehicleData RPCs +--! @parameters: +--! pRPC: RPC for mobile request +--! pParam: name of the VD parameter +--! pAppId: application number (1, 2, etc.) +--! isRequestOnHMIExpected: if true or omitted VI.Sub/UnsubscribeVehicleData request is expected on HMI, +--! otherwise - not expected +--! @return: none +--]] +function m.processSubscriptionRPC(pRPC, pParam, pAppId, isRequestOnHMIExpected) + if pAppId == nil then pAppId = 1 end + if isRequestOnHMIExpected == nil then isRequestOnHMIExpected = true end + local response = { + dataType = m.vd[pParam], + resultCode = "SUCCESS" + } + local responseParam = pParam + if pParam == "clusterModeStatus" then responseParam = "clusterModes" end + local cid = m.getMobileSession(pAppId):SendRPC(pRPC, { [pParam] = true }) + if isRequestOnHMIExpected == true then + m.getHMIConnection():ExpectRequest("VehicleInfo." .. pRPC, { [pParam] = true }) + :Do(function(_,data) + m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { [responseParam] = response }) + end) + else + m.getHMIConnection():ExpectRequest("VehicleInfo." .. pRPC):Times(0) + end + m.getMobileSession(pAppId):ExpectResponse(cid, + { success = true, resultCode = "SUCCESS", [responseParam] = response }) + m.getMobileSession(pAppId):ExpectNotification("OnHashChange") + :Do(function(_, data) + m.setHashId(data.payload.hashID, pAppId) + end) +end + +--[[ @sendOnVehicleData: Processing OnVehicleData RPC +--! @parameters: +--! pParam: name of the VD parameter +--! pExpTime: number of notifications (0, 1 or more) +--! pValue: data for the notification +--! @return: none +--]] +function m.sendOnVehicleData(pParam, pExpTime, pValue) + if pExpTime == nil then pExpTime = 1 end + if pValue == nil then pValue = m.vdValues[pParam] end + m.getHMIConnection():SendNotification("VehicleInfo.OnVehicleData", { [pParam] = pValue }) + m.getMobileSession():ExpectNotification("OnVehicleData", { [pParam] = pValue }) + :Times(pExpTime) +end + +--[[ @sendOnVehicleDataTwoApps: Processing OnVehicleData RPC for two apps +--! @parameters: +--! pParam: name of the VD parameter +--! pExpTimesApp1: number of notifications for 1st app +--! pExpTimesApp2: number of notifications for 2nd app +--! @return: none +--]] +function m.sendOnVehicleDataTwoApps(pParam, pExpTimesApp1, pExpTimesApp2) + local value = m.vdValues[pParam] + m.getHMIConnection():SendNotification("VehicleInfo.OnVehicleData", { [pParam] = value }) + m.getMobileSession(1):ExpectNotification("OnVehicleData", { [pParam] = value }) + :Times(pExpTimesApp1) + m.getMobileSession(2):ExpectNotification("OnVehicleData", { [pParam] = value }) + :Times(pExpTimesApp2) +end + +--[[ @unexpectedDisconnect: Unexpected disconnect sequence +--! @parameters: +--! pParam: name of the VD parameter +--! @return: none +--]] +function m.unexpectedDisconnect(pParam) + m.getHMIConnection():ExpectNotification("BasicCommunication.OnAppUnregistered", { unexpectedDisconnect = true }) + :Times(actions.mobile.getAppsCount()) + if pParam then + m.getHMIConnection():ExpectRequest("VehicleInfo.UnsubscribeVehicleData", { [pParam] = true }) + end + actions.mobile.disconnect() + utils.wait(1000) +end + +--[[ @ignitionOff: Ignition Off sequence +--! @parameters: +--! pParam: name of the VD parameter +--! @return: none +--]] +function m.ignitionOff(pParam) + local isOnSDLCloseSent = false + m.getHMIConnection():SendNotification("BasicCommunication.OnExitAllApplications", { reason = "SUSPEND" }) + m.getHMIConnection():ExpectNotification("BasicCommunication.OnSDLPersistenceComplete") + :Do(function() + m.getHMIConnection():ExpectRequest("VehicleInfo.UnsubscribeVehicleData", { [pParam] = true }) + m.getHMIConnection():SendNotification("BasicCommunication.OnExitAllApplications", { reason = "IGNITION_OFF" }) + m.getHMIConnection():ExpectNotification("BasicCommunication.OnSDLClose") + :Do(function() + isOnSDLCloseSent = true + SDL.DeleteFile() + end) + end) + m.wait(3000) + :Do(function() + if isOnSDLCloseSent == false then m.cprint(color.magenta, "BC.OnSDLClose was not sent") end + for i = 1, actions.mobile.getAppsCount() do + actions.mobile.deleteSession(i) + end + StopSDL() + end) +end + +--[[ @registerAppWithResumption: Successful app registration with resumption +--! @parameters: +--! pParam: name of the VD parameter +--! pAppId: application number (1, 2, etc.) +--! isRequestOnHMIExpected: if true VD.SubscribeVehicleData request is expected on HMI, otherwise - not expected +--! @return: none +--]] +function m.registerAppWithResumption(pParam, pAppId, isRequestOnHMIExpected) + if not pAppId then pAppId = 1 end + local response = { + dataType = m.vd[pParam], + resultCode = "SUCCESS" + } + local responseParam = pParam + if pParam == "clusterModeStatus" then responseParam = "clusterModes" end + m.getMobileSession(pAppId):StartService(7) + :Do(function() + local appParams = utils.cloneTable(actions.app.getParams(pAppId)) + appParams.hashID = m.getHashId(pAppId) + local corId = m.getMobileSession(pAppId):SendRPC("RegisterAppInterface", appParams) + m.getHMIConnection():ExpectNotification("BasicCommunication.OnAppRegistered") + :Do(function() + if isRequestOnHMIExpected == true then + m.getHMIConnection():ExpectRequest("VehicleInfo.SubscribeVehicleData", { [pParam] = true }) + :Do(function(_, data) + m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { [responseParam] = response }) + end) + else + m.getHMIConnection():ExpectRequest("VehicleInfo.SubscribeVehicleData"):Times(0) + end + end) + m.getMobileSession(pAppId):ExpectResponse(corId, { success = true, resultCode = "SUCCESS" }) + :Do(function() + m.getMobileSession(pAppId):ExpectNotification("OnPermissionsChange") + end) + end) +end + +--[[ @setAppVersion: Set application version based on VD parameter version +--! @parameters: +--! pParamVersion: version of the VD parameter +--! pOperator: operator to get target app version (increase or decrease) +--! @return: none +--]] +function m.setAppVersion(pParamVersion, pOperator) + m.cprint(color.magenta, "Param version:", pParamVersion) + local major = tonumber(split(pParamVersion)[1]) or 0 + local minor = tonumber(split(pParamVersion)[2]) or 0 + local patch = tonumber(split(pParamVersion)[3]) or 0 + local ver = (major*100 + minor*10 + patch) + pOperator + if ver < 450 then ver = 450 end + ver = tostring(ver) + major = tonumber(string.sub(ver, 1, 1)) + minor = tonumber(string.sub(ver, 2, 2)) + patch = tonumber(string.sub(ver, 3, 3)) + m.cprint(color.magenta, "App version:", major .. "." .. minor .. "." .. patch) + actions.app.getParams().syncMsgVersion.majorVersion = major + actions.app.getParams().syncMsgVersion.minorVersion = minor + actions.app.getParams().syncMsgVersion.patchVersion = patch +end + +return m diff --git a/test_scripts/API/VehicleData/commonVehicleData.lua b/test_scripts/API/VehicleData/commonVehicleData.lua deleted file mode 100644 index 6e63d42435..0000000000 --- a/test_scripts/API/VehicleData/commonVehicleData.lua +++ /dev/null @@ -1,394 +0,0 @@ ---------------------------------------------------------------------------------------------------- --- VehicleData common module ---------------------------------------------------------------------------------------------------- ---[[ Required Shared libraries ]] -local actions = require("user_modules/sequences/actions") -local runner = require('user_modules/script_runner') -local utils = require("user_modules/utils") -local sdl = require("SDL") - ---[[ Test Configuration ]] -runner.testSettings.isSelfIncluded = false -config.defaultProtocolVersion = 2 - ---[[ Local Variables ]] -local m = {} - -m.allVehicleData = { - gps = { - value = { - longitudeDegrees = 100, - latitudeDegrees = 20.5, - utcYear = 2020, - utcMonth = 6, - utcDay = 3, - utcHours = 14, - utcMinutes = 4, - utcSeconds = 34, - pdop = 10, - hdop = 100, - vdop = 500, - actual = false, - compassDirection = "WEST", - dimension = "2D", - satellites = 5, - altitude = 10, - heading = 100.9, - speed = 40.5 - }, - type = "VEHICLEDATA_GPS" - }, - speed = { - value = 30.2, - type = "VEHICLEDATA_SPEED" - }, - rpm = { - value = 10, - type = "VEHICLEDATA_RPM" - }, - fuelLevel = { - value = -3, - type = "VEHICLEDATA_FUELLEVEL" - }, - fuelLevel_State = { - value = "NORMAL", - type = "VEHICLEDATA_FUELLEVEL_STATE" - }, - instantFuelConsumption = { - value = 1000.1, - type = "VEHICLEDATA_FUELCONSUMPTION" - }, - fuelRange = { - value = { { type = "GASOLINE" , range = 20 }, { type = "BATTERY", range = 100 } }, - type = "VEHICLEDATA_FUELRANGE" - }, - externalTemperature = { - value = 24.1, - type = "VEHICLEDATA_EXTERNTEMP" - }, - turnSignal = { - value = "OFF", - type = "VEHICLEDATA_TURNSIGNAL" - }, - vin = { - value = "SJFHSIGD4058569", - type = "VEHICLEDATA_VIN" - }, - prndl = { - value = "PARK", - type = "VEHICLEDATA_PRNDL" - }, - tirePressure = { - value = { - pressureTelltale = "OFF", - leftFront = { - status = "NORMAL", - tpms = "UNKNOWN", - pressure = 1000 - }, - rightFront = { - status = "NORMAL", - tpms = "UNKNOWN", - pressure = 1000 - }, - leftRear = { - status = "NORMAL", - tpms = "UNKNOWN", - pressure = 1000 - }, - rightRear = { - status = "NORMAL", - tpms = "UNKNOWN", - pressure = 1000 - }, - innerLeftRear = { - status = "NORMAL", - tpms = "UNKNOWN", - pressure = 1000 - }, - innerRightRear = { - status = "NORMAL", - tpms = "UNKNOWN", - pressure = 1000 - } - }, - type = "VEHICLEDATA_TIREPRESSURE" - }, - odometer = { - value = 10000, - type = "VEHICLEDATA_ODOMETER" - }, - beltStatus = { - value = { - driverBeltDeployed = "NO_EVENT", - passengerBeltDeployed = "NO_EVENT", - passengerBuckleBelted = "NO_EVENT", - driverBuckleBelted = "NO_EVENT", - leftRow2BuckleBelted = "YES", - passengerChildDetected = "YES", - rightRow2BuckleBelted = "YES", - middleRow2BuckleBelted = "NO", - middleRow3BuckleBelted = "NO", - leftRow3BuckleBelted = "NOT_SUPPORTED", - rightRow3BuckleBelted = "NOT_SUPPORTED", - leftRearInflatableBelted = "NOT_SUPPORTED", - rightRearInflatableBelted = "FAULT", - middleRow1BeltDeployed = "NO_EVENT", - middleRow1BuckleBelted = "NO_EVENT" - }, - type = "VEHICLEDATA_BELTSTATUS" - }, - bodyInformation = { - value = { - parkBrakeActive = true, - ignitionStableStatus = "IGNITION_SWITCH_STABLE", - ignitionStatus = "RUN", - driverDoorAjar = true, - passengerDoorAjar = false, - rearLeftDoorAjar = false, - rearRightDoorAjar = false - }, - type = "VEHICLEDATA_BODYINFO" - }, - deviceStatus = { - value = { - voiceRecOn = true, - btIconOn = false, - callActive = false, - phoneRoaming = true, - textMsgAvailable = false, - battLevelStatus = "NOT_PROVIDED", - stereoAudioOutputMuted = false, - monoAudioOutputMuted = false, - signalLevelStatus = "NOT_PROVIDED", - primaryAudioSource = "CD", - eCallEventActive = false - }, - type = "VEHICLEDATA_DEVICESTATUS" - }, - driverBraking = { - value = "NO_EVENT", - type = "VEHICLEDATA_BRAKING" - }, - wiperStatus = { - value = "AUTO_OFF", - type = "VEHICLEDATA_WIPERSTATUS" - }, - headLampStatus = { - value = { - ambientLightSensorStatus = "NIGHT", - highBeamsOn = true, - lowBeamsOn = false - }, - type = "VEHICLEDATA_HEADLAMPSTATUS" - }, - engineTorque = { - value = 24.5, - type = "VEHICLEDATA_ENGINETORQUE" - }, - accPedalPosition = { - value = 10, - type = "VEHICLEDATA_ACCPEDAL" - }, - steeringWheelAngle = { - value = -100, - type = "VEHICLEDATA_STEERINGWHEEL" - }, - engineOilLife = { - value = 10.5, - type = "VEHICLEDATA_ENGINEOILLIFE" - }, - electronicParkBrakeStatus = { - value = "OPEN", - type = "VEHICLEDATA_ELECTRONICPARKBRAKESTATUS" - }, - cloudAppVehicleID = { - value = "GHF5848363FGHY90034847", - type = "VEHICLEDATA_CLOUDAPPVEHICLEID" - }, - eCallInfo = { - value = { - eCallNotificationStatus = "NOT_USED", - auxECallNotificationStatus = "NOT_USED", - eCallConfirmationStatus = "NORMAL" - }, - type = "VEHICLEDATA_ECALLINFO" - }, - airbagStatus = { - value = { - driverAirbagDeployed = "NO_EVENT", - driverSideAirbagDeployed = "NO_EVENT", - driverCurtainAirbagDeployed = "NO_EVENT", - passengerAirbagDeployed = "NO_EVENT", - passengerCurtainAirbagDeployed = "NO_EVENT", - driverKneeAirbagDeployed = "NO_EVENT", - passengerSideAirbagDeployed = "NO_EVENT", - passengerKneeAirbagDeployed = "NO_EVENT" - }, - type = "VEHICLEDATA_AIRBAGSTATUS" - }, - emergencyEvent = { - value = { - emergencyEventType = "NO_EVENT", - fuelCutoffStatus = "NORMAL_OPERATION", - rolloverEvent = "NO", - maximumChangeVelocity = 0, - multipleEvents = "NO" - }, - type = "VEHICLEDATA_EMERGENCYEVENT" - }, - clusterModeStatus = { - value = { - powerModeActive = true, - powerModeQualificationStatus = "POWER_MODE_OK", - carModeStatus = "NORMAL", - powerModeStatus = "KEY_APPROVED_0" - }, - type = "VEHICLEDATA_CLUSTERMODESTATUS" - }, - myKey = { - value = { e911Override = "ON" }, - type = "VEHICLEDATA_MYKEY" - } -} - -m.EMPTY_ARRAY = actions.json.EMPTY_ARRAY - ---[[ Shared Functions ]] -m.Title = runner.Title -m.Step = runner.Step -m.preconditions = actions.preconditions -m.postconditions = actions.postconditions -m.start = actions.start -m.activateApp = actions.activateApp -m.getMobileSession = actions.getMobileSession -m.getHMIConnection = actions.getHMIConnection -m.registerApp = actions.registerApp -m.registerAppWOPTU = actions.registerAppWOPTU -m.policyTableUpdate = actions.policyTableUpdate -m.getConfigAppParams = actions.getConfigAppParams -m.wait = utils.wait -m.extendedPolicy = sdl.buildOptions.extendedPolicy -m.setSDLIniParameter = actions.setSDLIniParameter -m.cloneTable = utils.cloneTable -m.cprint = utils.cprint -m.getPreloadedPT = actions.sdl.getPreloadedPT -m.setPreloadedPT = actions.sdl.setPreloadedPT - ---[[ Common Functions ]] -local function getVDParams() - local out = {} - for k in pairs(m.allVehicleData) do - table.insert(out, k) - end - return out -end - -function m.ptUpdate(pTbl) - pTbl.policy_table.app_policies[m.getConfigAppParams().fullAppID].groups = { "Base-4", "Emergency-1" } - local grp = pTbl.policy_table.functional_groupings["Emergency-1"] - for _, v in pairs(grp.rpcs) do - v.parameters = getVDParams() - end - pTbl.policy_table.vehicle_data = nil -end - -function m.ptUpdateMin(pTbl) - pTbl.policy_table.app_policies[m.getConfigAppParams().fullAppID].groups = { "Base-4", "Emergency-1" } - local grp = pTbl.policy_table.functional_groupings["Emergency-1"] - for _, v in pairs(grp.rpcs) do - v.parameters = { - "gps" - } - end - pTbl.policy_table.vehicle_data = nil -end - -function m.processRPCSubscriptionSuccess(pRpcName, pData) - local reqParams = { - [pData] = true - } - local respData - if pData == "clusterModeStatus" then - respData = "clusterModes" - else - respData = pData - end - local hmiResParams = { - [respData] = { - resultCode = "SUCCESS", - dataType = m.allVehicleData[pData].type - } - } - local cid = m.getMobileSession():SendRPC(pRpcName, reqParams) - m.getHMIConnection():ExpectRequest("VehicleInfo." .. pRpcName, reqParams) - :Do(function(_, data) - m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", hmiResParams) - end) - local mobResParams = m.cloneTable(hmiResParams) - mobResParams.success = true - mobResParams.resultCode = "SUCCESS" - m.getMobileSession():ExpectResponse(cid, mobResParams) -end - -function m.checkNotificationSuccess(pData) - local hmiNotParams = { [pData] = m.allVehicleData[pData].value } - local mobNotParams = m.cloneTable(hmiNotParams) - m.getHMIConnection():SendNotification("VehicleInfo.OnVehicleData", hmiNotParams) - m.getMobileSession():ExpectNotification("OnVehicleData", mobNotParams) -end - -function m.checkNotificationIgnored(pData) - local hmiNotParams = { [pData] = m.allVehicleData[pData].value } - m.getHMIConnection():SendNotification("VehicleInfo.OnVehicleData", hmiNotParams) - m.getMobileSession():ExpectNotification("OnVehicleData") - :Times(0) -end - -function m.updatePreloadedFile(pUpdateFunc) - local pt = m.getPreloadedPT() - pt.policy_table.functional_groupings["DataConsent-2"].rpcs = utils.json.null - pUpdateFunc(pt) - m.setPreloadedPT(pt) -end - -function m.processGetVDsuccess(pData) - local reqParams = { - [pData] = true - } - local hmiResParams = { - [pData] = m.allVehicleData[pData].value - } - local cid = m.getMobileSession():SendRPC("GetVehicleData", reqParams) - m.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", reqParams) - :Do(function(_, data) - m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", hmiResParams) - end) - local mobResParams = m.cloneTable(hmiResParams) - mobResParams.success = true - mobResParams.resultCode = "SUCCESS" - m.getMobileSession():ExpectResponse(cid, mobResParams) -end - -function m.processGetVDunsuccess(pData) - local reqParams = { - [pData] = true - } - local cid = m.getMobileSession():SendRPC("GetVehicleData", reqParams) - m.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", reqParams) :Times(0) - m.getMobileSession():ExpectResponse(cid, { resultCode = "INVALID_DATA", success = false }) -end - -function m.processGetVDwithCustomDataSuccess() - local cid = m.getMobileSession():SendRPC("GetVehicleData", { custom_vd_item1_integer = true }) - m.getHMIConnection():ExpectRequest("VehicleInfo.GetVehicleData", { OEM_REF_INT = true }) - :Do(function(_, data) - m.getHMIConnection():SendResponse(data.id, data.method, "SUCCESS", { OEM_REF_INT = 10 }) - end) - local mobResParams = { custom_vd_item1_integer = 10 } - mobResParams.success = true - mobResParams.resultCode = "SUCCESS" - m.getMobileSession():ExpectResponse(cid, mobResParams) -end - -return m diff --git a/test_sets/SDL5_0/audio_source_am_fm_xm.txt b/test_sets/SDL5_0/audio_source_am_fm_xm.txt index 8e8a16b590..2e38a4b5a4 100644 --- a/test_sets/SDL5_0/audio_source_am_fm_xm.txt +++ b/test_sets/SDL5_0/audio_source_am_fm_xm.txt @@ -5,5 +5,5 @@ ./test_scripts/RC/AUDIO_LIGHT_HMI_SETTINGS/SetInteriorVehicleData/011_Change_audio_source_in_BACKGROUND.lua ./test_scripts/RC/AUDIO_LIGHT_HMI_SETTINGS/SetInteriorVehicleData/012_Change_audio_source_in_FULL_rc_non_media_app.lua ./test_scripts/RC/AUDIO_LIGHT_HMI_SETTINGS/SetInteriorVehicleData/017_Change_audio_source_from_any_type_except_MOBILE_APP_keepContext_true.lua -./test_scripts/API/VehicleData/GetVehicleData/004_Success_deviceStatus_primaryAudioSource.lua -./test_scripts/API/VehicleData/OnVehicleData/005_Success_flow_deviceStatus_primaryAudioSource.lua +./test_scripts/API/VehicleData/AudioSource/001_Success_deviceStatus_primaryAudioSource.lua +./test_scripts/API/VehicleData/AudioSource/002_Success_flow_deviceStatus_primaryAudioSource.lua diff --git a/test_sets/SDL5_0/vehicle_data.txt b/test_sets/SDL5_0/vehicle_data.txt index 1a84d6bbce..5effd3f305 100644 --- a/test_sets/SDL5_0/vehicle_data.txt +++ b/test_sets/SDL5_0/vehicle_data.txt @@ -1,16 +1,36 @@ -./test_scripts/API/VehicleData/GetVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/GetVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua -./test_scripts/API/VehicleData/GetVehicleData/003_GetVD_gps_mandatory_parameters.lua -./test_scripts/API/VehicleData/GetVehicleData/004_Success_deviceStatus_primaryAudioSource.lua -./test_scripts/API/VehicleData/OnVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/OnVehicleData/002_NotificationForUnsubsribedParameter_Ignored_flow.lua -./test_scripts/API/VehicleData/OnVehicleData/003_NotificationParameterDisallowedByPolicies_Ignored_flow.lua -./test_scripts/API/VehicleData/OnVehicleData/004_OnVD_gps_mandatory_parameters.lua -./test_scripts/API/VehicleData/OnVehicleData/005_Success_flow_deviceStatus_primaryAudioSource.lua -./test_scripts/API/VehicleData/SubscribeVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/SubscribeVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua -./test_scripts/API/VehicleData/SubscribeVehicleData/003_RPC_parameter_already_subscribed_Result_IGNORED_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/002_RPC_parameter_not_yet_subscribed_IGNORED_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/003_RPC_parameter_already_unsubscribed_Result_IGNORED_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/004_RPC_parameter_disallowed_by_policies_Result_DISALLOWED_flow.lua +./test_scripts/API/VehicleData/AudioSource/001_Success_deviceStatus_primaryAudioSource.lua +./test_scripts/API/VehicleData/AudioSource/002_Success_flow_deviceStatus_primaryAudioSource.lua +./test_scripts/API/VehicleData/GetVehicleData/001_GetVD_Success_flow.lua +./test_scripts/API/VehicleData/GetVehicleData/002_GetVD_disallowed.lua +./test_scripts/API/VehicleData/GetVehicleData/003_GetVD_disallowed_after_PTU.lua +./test_scripts/API/VehicleData/GetVehicleData/004_GetVD_HMI_responds_with_invalid_data.lua +./test_scripts/API/VehicleData/GetVehicleData/005_GetVD_App_sends_invalid_request.lua +./test_scripts/API/VehicleData/GetVehicleData/006_GetVD_mandatory_parameters.lua +./test_scripts/API/VehicleData/GetVehicleData/007_GetVD_app_version_is_greater_than_parameter_version.lua +./test_scripts/API/VehicleData/GetVehicleData/008_GetVD_app_version_is_less_than_parameter_version.lua +./test_scripts/API/VehicleData/OnVehicleData/001_OnVD_Success.lua +;./test_scripts/API/VehicleData/OnVehicleData/002_OnVD_disallowed.lua https://github.com/smartdevicelink/sdl_core/issues/3365 +;./test_scripts/API/VehicleData/OnVehicleData/003_OnVD_disallowed_after_PTU.lua https://github.com/smartdevicelink/sdl_core/issues/3365 +./test_scripts/API/VehicleData/OnVehicleData/004_OnVD_with_invalid_data.lua +./test_scripts/API/VehicleData/OnVehicleData/005_OnVD_App_is_not_subscribed.lua +./test_scripts/API/VehicleData/OnVehicleData/006_OnVD_mandatory_parameters.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/001_SubscribeVD_Success.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/002_SubscribeVD_disallowed.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/003_SubscribeVD_disallowed_after_PTU.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/004_SubscribeVD_HMI_responds_with_invalid_data.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/005_SubscribeVD_App_sends_invalid_request.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/006_SubscribeVD_2nd_request_IGNORED.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/007_SubscribeVD_for_2_apps.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/008_SubscribeVD_HMI_responds_with_not_success_codes.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/009_SubscribeVD_Resumption_of_subscription_Unexpected_Disconnect.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/010_SubscribeVD_Resumption_of_subscription_Ignition_Cycle.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/011_SubscribeVD_Resumption_of_subscription_for_2_apps_Unexpected_Disconnect.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/012_SubscribeVD_Resumption_of_subscription_for_2_apps_Ignition_Cycle.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/001_UnsubscribeVD_Success.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/002_UnsubscribeVD_disallowed.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/003_UnsubscribeVD_disallowed_after_PTU.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/004_UnsubscribeVD_HMI_responds_with_invalid_data.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/005_UnsubscribeVD_App_sends_invalid_request.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/006_UnsubscribeVD_2nd_request_IGNORED.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/007_UnsubscribeVD_for_2_apps.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/008_UnsubscribeVD_HMI_responds_with_not_success_codes.lua diff --git a/test_sets/vehicle_data.txt b/test_sets/vehicle_data.txt index 1a84d6bbce..5effd3f305 100644 --- a/test_sets/vehicle_data.txt +++ b/test_sets/vehicle_data.txt @@ -1,16 +1,36 @@ -./test_scripts/API/VehicleData/GetVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/GetVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua -./test_scripts/API/VehicleData/GetVehicleData/003_GetVD_gps_mandatory_parameters.lua -./test_scripts/API/VehicleData/GetVehicleData/004_Success_deviceStatus_primaryAudioSource.lua -./test_scripts/API/VehicleData/OnVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/OnVehicleData/002_NotificationForUnsubsribedParameter_Ignored_flow.lua -./test_scripts/API/VehicleData/OnVehicleData/003_NotificationParameterDisallowedByPolicies_Ignored_flow.lua -./test_scripts/API/VehicleData/OnVehicleData/004_OnVD_gps_mandatory_parameters.lua -./test_scripts/API/VehicleData/OnVehicleData/005_Success_flow_deviceStatus_primaryAudioSource.lua -./test_scripts/API/VehicleData/SubscribeVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/SubscribeVehicleData/002_RPC_parameter_DISALLOWED_by_policies_flow.lua -./test_scripts/API/VehicleData/SubscribeVehicleData/003_RPC_parameter_already_subscribed_Result_IGNORED_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/001_Success_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/002_RPC_parameter_not_yet_subscribed_IGNORED_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/003_RPC_parameter_already_unsubscribed_Result_IGNORED_flow.lua -./test_scripts/API/VehicleData/UnsubscribeVehicleData/004_RPC_parameter_disallowed_by_policies_Result_DISALLOWED_flow.lua +./test_scripts/API/VehicleData/AudioSource/001_Success_deviceStatus_primaryAudioSource.lua +./test_scripts/API/VehicleData/AudioSource/002_Success_flow_deviceStatus_primaryAudioSource.lua +./test_scripts/API/VehicleData/GetVehicleData/001_GetVD_Success_flow.lua +./test_scripts/API/VehicleData/GetVehicleData/002_GetVD_disallowed.lua +./test_scripts/API/VehicleData/GetVehicleData/003_GetVD_disallowed_after_PTU.lua +./test_scripts/API/VehicleData/GetVehicleData/004_GetVD_HMI_responds_with_invalid_data.lua +./test_scripts/API/VehicleData/GetVehicleData/005_GetVD_App_sends_invalid_request.lua +./test_scripts/API/VehicleData/GetVehicleData/006_GetVD_mandatory_parameters.lua +./test_scripts/API/VehicleData/GetVehicleData/007_GetVD_app_version_is_greater_than_parameter_version.lua +./test_scripts/API/VehicleData/GetVehicleData/008_GetVD_app_version_is_less_than_parameter_version.lua +./test_scripts/API/VehicleData/OnVehicleData/001_OnVD_Success.lua +;./test_scripts/API/VehicleData/OnVehicleData/002_OnVD_disallowed.lua https://github.com/smartdevicelink/sdl_core/issues/3365 +;./test_scripts/API/VehicleData/OnVehicleData/003_OnVD_disallowed_after_PTU.lua https://github.com/smartdevicelink/sdl_core/issues/3365 +./test_scripts/API/VehicleData/OnVehicleData/004_OnVD_with_invalid_data.lua +./test_scripts/API/VehicleData/OnVehicleData/005_OnVD_App_is_not_subscribed.lua +./test_scripts/API/VehicleData/OnVehicleData/006_OnVD_mandatory_parameters.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/001_SubscribeVD_Success.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/002_SubscribeVD_disallowed.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/003_SubscribeVD_disallowed_after_PTU.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/004_SubscribeVD_HMI_responds_with_invalid_data.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/005_SubscribeVD_App_sends_invalid_request.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/006_SubscribeVD_2nd_request_IGNORED.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/007_SubscribeVD_for_2_apps.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/008_SubscribeVD_HMI_responds_with_not_success_codes.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/009_SubscribeVD_Resumption_of_subscription_Unexpected_Disconnect.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/010_SubscribeVD_Resumption_of_subscription_Ignition_Cycle.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/011_SubscribeVD_Resumption_of_subscription_for_2_apps_Unexpected_Disconnect.lua +./test_scripts/API/VehicleData/SubscribeVehicleData/012_SubscribeVD_Resumption_of_subscription_for_2_apps_Ignition_Cycle.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/001_UnsubscribeVD_Success.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/002_UnsubscribeVD_disallowed.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/003_UnsubscribeVD_disallowed_after_PTU.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/004_UnsubscribeVD_HMI_responds_with_invalid_data.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/005_UnsubscribeVD_App_sends_invalid_request.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/006_UnsubscribeVD_2nd_request_IGNORED.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/007_UnsubscribeVD_for_2_apps.lua +./test_scripts/API/VehicleData/UnsubscribeVehicleData/008_UnsubscribeVD_HMI_responds_with_not_success_codes.lua