corrections.

add some test for sms commands
This commit is contained in:
Lexsus 2020-05-28 17:33:51 +03:00
parent 11f768636e
commit 9a1993c5f6
3 changed files with 55 additions and 32 deletions

View file

@ -227,9 +227,9 @@ class SmsCommunicatorPlugin @Inject constructor(
"NSCLIENT" -> "NSCLIENT" ->
if (splitted.size == 2) processNSCLIENT(splitted, receivedSms) if (splitted.size == 2) processNSCLIENT(splitted, receivedSms)
else sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat))) else sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
"PUMP" ->//TODO remoteCommandsAllowed "PUMP" ->
if (!remoteCommandsAllowed) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_remotecommandnotallowed))) if (!remoteCommandsAllowed && splitted.size > 1) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_remotecommandnotallowed)))
else if (splitted.size <=3) processPUMP(splitted,receivedSms) else if (splitted.size <= 3) processPUMP(splitted, receivedSms)
else sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat))) else sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
"PROFILE" -> "PROFILE" ->
if (!remoteCommandsAllowed) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_remotecommandnotallowed))) if (!remoteCommandsAllowed) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_remotecommandnotallowed)))
@ -442,7 +442,7 @@ class SmsCommunicatorPlugin @Inject constructor(
sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat))) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
} }
private fun processPUMP(splitted: Array<String>,receivedSms: Sms) { private fun processPUMP(splitted: Array<String>, receivedSms: Sms) {
if (splitted.size == 1) { if (splitted.size == 1) {
commandQueue.readStatus("SMS", object : Callback() { commandQueue.readStatus("SMS", object : Callback() {
override fun run() { override fun run() {
@ -457,60 +457,49 @@ class SmsCommunicatorPlugin @Inject constructor(
} }
}) })
receivedSms.processed = true receivedSms.processed = true
} } else if ((splitted.size == 2) && (splitted[1].equals("CONNECT", ignoreCase = true))) {
else if ((splitted.size == 2) && (splitted[1].equals("CONNECT", ignoreCase = true)))
{
val passCode = generatePasscode() val passCode = generatePasscode()
val reply = String.format(resourceHelper.gs(R.string.smscommunicator_pumpconnect),passCode) val reply = String.format(resourceHelper.gs(R.string.smscommunicator_pumpconnectwithcode), passCode)
receivedSms.processed = true receivedSms.processed = true
messageToConfirm = AuthRequest(injector,receivedSms,reply,passCode,object : SmsAction(){ messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() {
override fun run() { override fun run() {
commandQueue.cancelTempBasal(true, object : Callback() { commandQueue.cancelTempBasal(true, object : Callback() {
override fun run() { override fun run() {
if (!result.success) { if (!result.success) {
sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_pumpconnectfail))) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_pumpconnectfail)))
} } else {
else
{
loopPlugin.suspendTo(0L) loopPlugin.suspendTo(0L)
sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.reconnect))) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_reconnect)))
rxBus.send(EventRefreshOverview("SMS_PUMP_START")) rxBus.send(EventRefreshOverview("SMS_PUMP_START"))
//rxBus.send(EventRefreshOverview("SMS_PUMP_CONNECT"))
sp.putBoolean(R.string.key_objectiveusereconnect, true) sp.putBoolean(R.string.key_objectiveusereconnect, true)
loopPlugin.createOfflineEvent(0) loopPlugin.createOfflineEvent(0)
} }
} }
}) })
} }
}) })
} } else if (splitted.size == 3) {
else if (splitted.size == 3) if (splitted[1].equals("DISCONNECT", ignoreCase = true)) {
{
if (splitted[1].equals("DISCONNECT", ignoreCase = true)){
val minutes = SafeParse.stringToInt(splitted[2]) val minutes = SafeParse.stringToInt(splitted[2])
val passCode = generatePasscode() val passCode = generatePasscode()
val reply = String.format(resourceHelper.gs(R.string.smscommunicator_pumpdisconnect),minutes,passCode) val reply = String.format(resourceHelper.gs(R.string.smscommunicator_pumpdisconnectwithcode), minutes, passCode)
receivedSms.processed = true receivedSms.processed = true
messageToConfirm = AuthRequest(injector,receivedSms,reply,passCode,object : SmsAction(){ messageToConfirm = AuthRequest(injector, receivedSms, reply, passCode, object : SmsAction() {
override fun run() { override fun run() {
val profile = profileFunction.getProfile() val profile = profileFunction.getProfile()
loopPlugin.disconnectPump(minutes, profile) loopPlugin.disconnectPump(minutes, profile)
rxBus.send(EventRefreshOverview("SMS_PUMP_DISCONNECT")) rxBus.send(EventRefreshOverview("SMS_PUMP_DISCONNECT"))
sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.pumpsuspended))) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.smscommunicator_pumpdisconnected)))
//rxBus.send(EventRefreshOverview("suspendmenu"))
} }
}) })
} } else {
else{
sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat))) sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
return return
} }
} else {
sendSMS(Sms(receivedSms.phoneNumber, resourceHelper.gs(R.string.wrongformat)))
return
} }
} }

View file

@ -300,9 +300,11 @@
<string name="smscommunicator_loopisenabled">Loop is enabled</string> <string name="smscommunicator_loopisenabled">Loop is enabled</string>
<string name="valuelimitedto">%1$.2f limited to %2$.2f</string> <string name="valuelimitedto">%1$.2f limited to %2$.2f</string>
<string name="valueoutofrange">Value %1$s is out of hard limits</string> <string name="valueoutofrange">Value %1$s is out of hard limits</string>
<string name="smscommunicator_pumpconnect">To connect pump reply with code %1$s</string> <string name="smscommunicator_pumpconnectwithcode">To connect pump reply with code %1$s</string>
<string name="smscommunicator_pumpdisconnect">To disconnect pump to %1d minutes reply with code %2$s</string> <string name="smscommunicator_pumpconnectfail">Connection to pump failed</string>
<string name="smscommunicator_pumpconnectfail">To connect pump failed</string> <string name="smscommunicator_pumpdisconnectwithcode">To disconnect pump for %1d minutes reply with code %2$s</string>
<string name="smscommunicator_pumpdisconnected">Pump disconnected</string>
<string name="smscommunicator_reconnect">Pump reconnected</string>
<string name="smscommunicator_remotecommandnotallowed">Remote command is not allowed</string> <string name="smscommunicator_remotecommandnotallowed">Remote command is not allowed</string>
<string name="smscommunicator_remotebolusnotallowed">Remote bolus not available. Try again later.</string> <string name="smscommunicator_remotebolusnotallowed">Remote bolus not available. Try again later.</string>
<string name="smscommunicator_basalreplywithcode">To start basal %1$.2fU/h for %2$d min reply with code %3$s</string> <string name="smscommunicator_basalreplywithcode">To start basal %1$.2fU/h for %2$d min reply with code %3$s</string>

View file

@ -226,6 +226,9 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
`when`(resourceHelper.gs(R.string.smscommunicator_loopdisablereplywithcode)).thenReturn("To disable loop reply with code %1\$s") `when`(resourceHelper.gs(R.string.smscommunicator_loopdisablereplywithcode)).thenReturn("To disable loop reply with code %1\$s")
`when`(resourceHelper.gs(R.string.smscommunicator_loopenablereplywithcode)).thenReturn("To enable loop reply with code %1\$s") `when`(resourceHelper.gs(R.string.smscommunicator_loopenablereplywithcode)).thenReturn("To enable loop reply with code %1\$s")
`when`(resourceHelper.gs(R.string.smscommunicator_loopresumereplywithcode)).thenReturn("To resume loop reply with code %1\$s") `when`(resourceHelper.gs(R.string.smscommunicator_loopresumereplywithcode)).thenReturn("To resume loop reply with code %1\$s")
`when`(resourceHelper.gs(R.string.smscommunicator_pumpconnectwithcode)).thenReturn("To connect pump reply with code %1\$s")
`when`(resourceHelper.gs(R.string.smscommunicator_reconnect)).thenReturn("Pump reconnected")
`when`(resourceHelper.gs(R.string.smscommunicator_pumpconnectfail)).thenReturn("Connection to pump failed")
} }
@Test @Test
@ -515,6 +518,35 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
Assert.assertEquals("PUMP", smsCommunicatorPlugin.messages[0].text) Assert.assertEquals("PUMP", smsCommunicatorPlugin.messages[0].text)
Assert.assertEquals("Virtual Pump", smsCommunicatorPlugin.messages[1].text) Assert.assertEquals("Virtual Pump", smsCommunicatorPlugin.messages[1].text)
//PUMP CONNECT 1 2: wrong format
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "PUMP CONNECT 1 2")
smsCommunicatorPlugin.processSms(sms)
Assert.assertFalse(sms.ignored)
Assert.assertEquals("PUMP CONNECT 1 2", smsCommunicatorPlugin.messages[0].text)
Assert.assertEquals("Wrong format", smsCommunicatorPlugin.messages[1].text)
//PUMP CONNECT BLABLA
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "PUMP BLABLA")
smsCommunicatorPlugin.processSms(sms)
Assert.assertFalse(sms.ignored)
Assert.assertEquals("PUMP BLABLA", smsCommunicatorPlugin.messages[0].text)
Assert.assertEquals("Wrong format", smsCommunicatorPlugin.messages[1].text)
//PUMP CONNECT
PowerMockito.`when`(loopPlugin.isEnabled(PluginType.LOOP)).thenReturn(true)
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "PUMP CONNECT")
smsCommunicatorPlugin.processSms(sms)
Assert.assertFalse(sms.ignored)
Assert.assertEquals("PUMP CONNECT", smsCommunicatorPlugin.messages[0].text)
Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To connect pump reply with code "))
passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
smsCommunicatorPlugin.processSms(Sms("1234", passCode))
Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
Assert.assertEquals("Pump reconnected", smsCommunicatorPlugin.messages[3].text)
//HELP //HELP
smsCommunicatorPlugin.messages = ArrayList() smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "HELP") sms = Sms("1234", "HELP")