void tst_QBluetoothTransferRequest::tst_construction()
{
    QFETCH(QBluetoothAddress, address);
    QFETCH(tst_QBluetoothTransferRequest_QParameterMap, parameters);

    QBluetoothTransferRequest transferRequest(address);

    foreach (int key, parameters.keys()) {
        transferRequest.setAttribute((QBluetoothTransferRequest::Attribute)key, parameters[key]);
        QCOMPARE(parameters[key], transferRequest.attribute((QBluetoothTransferRequest::Attribute)key));
    }

    QCOMPARE(transferRequest.address(), address);

    QBluetoothTransferRequest copyRequest(transferRequest);

    QCOMPARE(copyRequest.address(), address);
    QCOMPARE(transferRequest, copyRequest);
}
void tst_QBluetoothTransferRequest::tst_assignment()
{
    QFETCH(QBluetoothAddress, address);
    QFETCH(tst_QBluetoothTransferRequest_QParameterMap, parameters);

    QBluetoothTransferRequest transferRequest(address);

    foreach (int key, parameters.keys()) {
        transferRequest.setAttribute((QBluetoothTransferRequest::Attribute)key, parameters[key]);
    }

    {
        QBluetoothTransferRequest copyRequest = transferRequest;

        QCOMPARE(copyRequest.address(), address);
        QCOMPARE(transferRequest, copyRequest);
    }

    {
        QBluetoothTransferRequest copyRequest(QBluetoothAddress("000000000001"));

        copyRequest = transferRequest;

        QCOMPARE(copyRequest.address(), address);
        QCOMPARE(transferRequest, copyRequest);
    }

    {
        QBluetoothTransferRequest copyRequest1(QBluetoothAddress("000000000001"));
        QBluetoothTransferRequest copyRequest2(QBluetoothAddress("000000000001"));

        copyRequest1 = copyRequest2 = transferRequest;

        QCOMPARE(copyRequest1.address(), address);
        QCOMPARE(copyRequest2.address(), address);
        QCOMPARE(transferRequest, copyRequest1);
        QCOMPARE(transferRequest, copyRequest2);

    }
}
Ejemplo n.º 3
0
TEST(RequestSerializationTest, UrlTests) {
  {
    WdtUri uri("wdt://blah.com?k1=v1&k2=v2&k3=v3.1,v3.2");
    EXPECT_EQ(uri.getErrorCode(), OK);
    EXPECT_EQ(uri.getHostName(), "blah.com");
    EXPECT_EQ(uri.getQueryParam("k1"), "v1");
    EXPECT_EQ(uri.getQueryParam("k2"), "v2");
    EXPECT_EQ(uri.getQueryParam("k3"), "v3.1,v3.2");
    EXPECT_EQ(uri.getQueryParams().size(), 3);

    uri = "wdt://blah?name=first,second";
    EXPECT_EQ(uri.getErrorCode(), OK);
    EXPECT_EQ(uri.getQueryParam("name"), "first,second");
    uri = "http://blah.com?name=test";
    ASSERT_TRUE(uri.getHostName().empty());

    uri = "wdt://localhost";
    EXPECT_EQ(uri.getErrorCode(), OK);
    EXPECT_EQ(uri.getHostName(), "localhost");

    uri = "wdt://localhost.facebook.com?key=value1,value2";
    EXPECT_EQ(uri.getHostName(), "localhost.facebook.com");
    EXPECT_EQ(uri.getQueryParam("key"), "value1,value2");

    uri = "wdt://127.0.0.1?";
    EXPECT_EQ(uri.getHostName(), "127.0.0.1");
    EXPECT_EQ(uri.getQueryParams().size(), 0);

    uri = "wdt://127.0.0.1?a";
    EXPECT_EQ(uri.getHostName(), "127.0.0.1");
    EXPECT_EQ(uri.getQueryParams().size(), 1);

    EXPECT_EQ(uri.generateUrl(), "wdt://127.0.0.1?a=");

    uri = "wdt://?a=10";
    EXPECT_NE(uri.getErrorCode(), OK);

    vector<string> keys;
    vector<string> values;
    WdtUri wdtUri;
    for (int i = 0; i < 100; i++) {
      keys.push_back(to_string(rand32()));
      values.push_back(to_string(rand32()));
    }
    for (size_t i = 0; i < keys.size(); i++) {
      wdtUri.setQueryParam(keys[i], values[i]);
    }
    uri = wdtUri.generateUrl();
    EXPECT_NE(uri.getErrorCode(), OK);
    ASSERT_TRUE(uri.getHostName().empty());
    for (size_t i = 0; i < keys.size(); i++) {
      EXPECT_EQ(uri.getQueryParam(keys[i]), values[i]);
    }
  }
  {
    // ipv6 uri test
    WdtUri uri("wdt://[::1]:22356?k1=v1");
    EXPECT_EQ(uri.getErrorCode(), OK);
    EXPECT_EQ(uri.getHostName(), "::1");
    EXPECT_EQ(uri.getPort(), 22356);

    uri = "wdt://[::1]:";
    EXPECT_EQ(uri.getErrorCode(), URI_PARSE_ERROR);
    EXPECT_EQ(uri.getHostName(), "::1");
    EXPECT_EQ(uri.getPort(), -1);

    uri = "wdt://[12::12:1]:1";
    EXPECT_EQ(uri.getErrorCode(), OK);
    EXPECT_EQ(uri.getHostName(), "12::12:1");
    EXPECT_EQ(uri.getPort(), 1);

    uri = "wdt://123.4.5.6:22356";
    EXPECT_EQ(uri.getErrorCode(), OK);
    EXPECT_EQ(uri.getHostName(), "123.4.5.6");
    EXPECT_EQ(uri.getPort(), 22356);

    uri = "wdt://[";
    EXPECT_EQ(uri.getErrorCode(), URI_PARSE_ERROR);
    EXPECT_EQ(uri.getHostName(), "");

    uri = "wdt://[121";
    EXPECT_EQ(uri.getErrorCode(), URI_PARSE_ERROR);
    EXPECT_EQ(uri.getHostName(), "");

    uri = "wdt://[]";
    EXPECT_EQ(uri.getErrorCode(), URI_PARSE_ERROR);
    EXPECT_EQ(uri.getHostName(), "");

    uri = "wdt://[]:22356";
    EXPECT_EQ(uri.getErrorCode(), URI_PARSE_ERROR);
    EXPECT_EQ(uri.getHostName(), "");
    EXPECT_EQ(uri.getPort(), 22356);

    uri = "wdt://[::1]:*";
    EXPECT_EQ(uri.getErrorCode(), URI_PARSE_ERROR);
    EXPECT_EQ(uri.getHostName(), "::1");
    EXPECT_EQ(uri.getPort(), -1);

    uri = "wdt://]:22356";
    EXPECT_EQ(uri.getErrorCode(), OK);
    EXPECT_EQ(uri.getHostName(), "]");
    EXPECT_EQ(uri.getPort(), 22356);

    {
      uri = "wdt://[::1]:24689?num_ports=3";
      EXPECT_EQ(uri.getPort(), 24689);
      WdtTransferRequest transferRequest(uri.generateUrl());
      EXPECT_EQ(uri.getErrorCode(), OK);
      EXPECT_EQ(transferRequest.hostName, "::1");
      EXPECT_EQ(transferRequest.ports,
                WdtTransferRequest::genPortsVector(24689, 3));
    }
    {
      uri = "wdt://[::1]?num_ports=10";  // missing port
      WdtTransferRequest transferRequest(uri.generateUrl());
      EXPECT_EQ(uri.getErrorCode(), OK);
      EXPECT_EQ(transferRequest.errorCode, INVALID_REQUEST);
      EXPECT_EQ(transferRequest.hostName, "::1");
    }
    {
      uri = "wdt://[::1]:12345?num_ports=abc";  // bad num ports
      WdtTransferRequest transferRequest(uri.generateUrl());
      EXPECT_EQ(uri.getErrorCode(), OK);
      EXPECT_EQ(transferRequest.errorCode, URI_PARSE_ERROR);
      EXPECT_EQ(transferRequest.hostName, "::1");
    }
    {
      uri = "wdt://[::1]:24689?start_port=22356&ports=1,2,3,4";
      WdtTransferRequest transferRequest(uri.generateUrl());
      EXPECT_EQ(uri.getErrorCode(), OK);
      EXPECT_EQ(transferRequest.hostName, "::1");
      EXPECT_EQ(transferRequest.ports,
                WdtTransferRequest::genPortsVector(1, 4));
    }
  }
  {
    WdtTransferRequest request(123, 5, "");
    request.hostName = "host1";
    request.transferId = "tid1";
    request.protocolVersion = 753;
    string serialized = request.genWdtUrlWithSecret();
    LOG(INFO) << "Serialized " << serialized;
    WdtTransferRequest deser(serialized);
    EXPECT_EQ(deser.hostName, "host1");
    EXPECT_EQ(deser.transferId, "tid1");
    EXPECT_EQ(deser.protocolVersion, 753);
    EXPECT_EQ(deser.ports.size(), 5);
    for (int i = 0; i < 5; ++i) {
      EXPECT_EQ(deser.ports[i], 123 + i);
    }
    EXPECT_EQ(deser.errorCode, OK);
    EXPECT_EQ(deser.genWdtUrlWithSecret(), serialized);
    EXPECT_EQ(deser, request);
  }
  {
    WdtTransferRequest transferRequest(24689, 1, "");
    // Lets not populate anything else
    transferRequest.hostName = "localhost";
    string serializedString = transferRequest.genWdtUrlWithSecret();
    LOG(INFO) << serializedString;
    WdtTransferRequest dummy(serializedString);
    LOG(INFO) << dummy.getLogSafeString();
    EXPECT_EQ(transferRequest, dummy);
  }
  {
    string uri = "wdt://localhost?ports=1&recpv=10";
    WdtTransferRequest transferRequest(uri);
    EXPECT_EQ(transferRequest.errorCode, OK);
    ASSERT_EQ(transferRequest.ports.size(), 1);
    EXPECT_EQ(transferRequest.ports[0], 1);
  }
  {
    WdtTransferRequest transferRequest(0, 8, "/dir3/dir4");
    Receiver receiver(transferRequest);
    transferRequest = receiver.init();
    EXPECT_EQ(transferRequest.errorCode, OK);
    ASSERT_TRUE(transferRequest.ports.size() != 0);
    for (auto port : transferRequest.ports) {
      ASSERT_TRUE(port != 0);
    }
    LOG(INFO) << transferRequest.hostName;
    ASSERT_TRUE(!transferRequest.hostName.empty());
  }
  {
    string uri = "wdt://localhost?ports=1,2,3,10&dir=test&recpv=100&id=111";
    WdtTransferRequest transferRequest(uri);
    EXPECT_EQ(transferRequest.errorCode, OK);
    EXPECT_EQ(transferRequest.hostName, "localhost");
    EXPECT_EQ(transferRequest.directory, "test");
    EXPECT_EQ(transferRequest.protocolVersion, 100);
    EXPECT_EQ(transferRequest.transferId, "111");
    vector<int32_t> expectedPorts;
    for (int i = 0; i < 3; i++) {
      expectedPorts.push_back(i + 1);
    }
    expectedPorts.push_back(10);
    EXPECT_EQ(transferRequest.ports, expectedPorts);
  }
  {
    // missing numports/ports
    string uri = "wdt://localhost?dir=test&recpv=100&id=111";
    WdtTransferRequest transferRequest(uri);
    EXPECT_EQ(transferRequest.errorCode, INVALID_REQUEST);
    EXPECT_EQ(transferRequest.genWdtUrlWithSecret(), "INVALID_REQUEST");
  }
  {
    string url = "wdt://";
    WdtTransferRequest transferRequest(url);
    EXPECT_EQ(transferRequest.errorCode, INVALID_REQUEST);
    EXPECT_EQ(transferRequest.genWdtUrlWithSecret(), "INVALID_REQUEST");
  }
  {
    string url = "wdt://localhost:22355?num_ports=3";
    WdtTransferRequest transferRequest(url);
    Receiver receiver(transferRequest);
    auto retTransferRequest = receiver.init();
    EXPECT_EQ(retTransferRequest.errorCode, INVALID_REQUEST);
  }
  {
    string url = "wdt://localhost:22355";
    WdtTransferRequest transferRequest(url);
    Sender sender(transferRequest);
    auto retTransferRequest = sender.init();
    EXPECT_EQ(retTransferRequest.errorCode, INVALID_REQUEST);
  }
  {
    string url = "wdt://localhost:22355?num_ports=3";
    WdtTransferRequest transferRequest(url);
    EXPECT_EQ(transferRequest.errorCode, OK);
    transferRequest.directory = "blah";
    // Artificial error
    transferRequest.errorCode = ERROR;
    Receiver receiver(transferRequest);
    auto retTransferRequest = receiver.init();
    EXPECT_EQ(retTransferRequest.errorCode, ERROR);
  }
}