Show appropriate error message if mailbox QR code is scanned.

This commit is contained in:
akwizgran
2022-12-02 13:29:52 +00:00
parent badccac90c
commit b4f3604584
9 changed files with 124 additions and 44 deletions

View File

@@ -14,6 +14,7 @@ import org.briarproject.bramble.api.plugin.LanTcpConstants;
import org.briarproject.bramble.api.plugin.TransportId;
import org.briarproject.bramble.api.qrcode.QrCodeClassifier;
import org.briarproject.bramble.api.qrcode.QrCodeClassifier.QrCodeType;
import org.briarproject.bramble.api.qrcode.WrongQrCodeTypeException;
import org.briarproject.nullsafety.NotNullByDefault;
import java.io.ByteArrayInputStream;
@@ -49,7 +50,8 @@ class PayloadParserImpl implements PayloadParser {
public Payload parse(String payloadString) throws IOException {
Pair<QrCodeType, Integer> typeAndVersion =
qrCodeClassifier.classifyQrCode(payloadString);
if (typeAndVersion.getFirst() != BQP) throw new FormatException();
QrCodeType qrCodeType = typeAndVersion.getFirst();
if (qrCodeType != BQP) throw new WrongQrCodeTypeException(qrCodeType);
int formatVersion = typeAndVersion.getSecond();
if (formatVersion != QR_FORMAT_VERSION) {
boolean tooOld = formatVersion < QR_FORMAT_VERSION;

View File

@@ -10,6 +10,7 @@ import org.briarproject.bramble.api.data.BdfReaderFactory;
import org.briarproject.bramble.api.keyagreement.Payload;
import org.briarproject.bramble.api.qrcode.QrCodeClassifier;
import org.briarproject.bramble.api.qrcode.QrCodeClassifier.QrCodeType;
import org.briarproject.bramble.api.qrcode.WrongQrCodeTypeException;
import org.briarproject.bramble.test.BrambleMockTestCase;
import org.jmock.Expectations;
import org.junit.Test;
@@ -40,8 +41,8 @@ public class PayloadParserImplTest extends BrambleMockTestCase {
private final PayloadParserImpl payloadParser =
new PayloadParserImpl(bdfReaderFactory, qrCodeClassifier);
@Test(expected = FormatException.class)
public void testThrowsFormatExceptionForWrongQrCodeType() throws Exception {
@Test(expected = WrongQrCodeTypeException.class)
public void testThrowsExceptionForWrongQrCodeType() throws Exception {
expectClassifyQrCode(payload, MAILBOX, QR_FORMAT_VERSION);
payloadParser.parse(payload);