diff options
Diffstat (limited to 'tests/auto/qmlnetwork/qqmlsslconfiguration')
5 files changed, 293 insertions, 0 deletions
diff --git a/tests/auto/qmlnetwork/qqmlsslconfiguration/CMakeLists.txt b/tests/auto/qmlnetwork/qqmlsslconfiguration/CMakeLists.txt new file mode 100644 index 0000000000..bc5709dc86 --- /dev/null +++ b/tests/auto/qmlnetwork/qqmlsslconfiguration/CMakeLists.txt @@ -0,0 +1,43 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +if(NOT QT_BUILD_STANDALONE_TESTS AND NOT QT_BUILDING_QT) + cmake_minimum_required(VERSION 3.16) + project(tst_sslconfiguration_qml LANGUAGES CXX) + find_package(Qt6BuildInternals REQUIRED COMPONENTS STANDALONE_TEST) +endif() + +qt_internal_add_test(tst_sslconfiguration_qml + QMLTEST + SOURCES + tst_sslconfiguration_qml.cpp + LIBRARIES + Qt::Qml + Qt::QuickTestUtilsPrivate + Qt::QmlNetwork +) + +qt_policy(SET QTP0001 NEW) + +qt_add_qml_module(tst_sslconfiguration_qml + URI QmlTestUri + VERSION 1.0 + QML_FILES + qml/tst_sslconfiguration.qml +) + +set_source_files_properties("${CMAKE_CURRENT_LIST_DIR}/data/cert.pem" + PROPERTIES QT_RESOURCE_ALIAS data/cert.pem) +set_source_files_properties("${CMAKE_CURRENT_LIST_DIR}/data/key.pem" + PROPERTIES QT_RESOURCE_ALIAS data/key.pem) + +qt_add_resources(tst_sslconfiguration_qml + "data" + PREFIX + "/" + FILES + "${CMAKE_CURRENT_LIST_DIR}/data/cert.pem" + "${CMAKE_CURRENT_LIST_DIR}/data/key.pem" +) + +qt_autogen_tools_initial_setup(tst_sslconfiguration_qml) diff --git a/tests/auto/qmlnetwork/qqmlsslconfiguration/data/cert.pem b/tests/auto/qmlnetwork/qqmlsslconfiguration/data/cert.pem new file mode 100644 index 0000000000..3fb973e1be --- /dev/null +++ b/tests/auto/qmlnetwork/qqmlsslconfiguration/data/cert.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIJAMPfLBc9ERZGMA0GCSqGSIb3DQEBCwUAMIGLMQswCQYD +VQQGEwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xEzARBgNV +BAoMClF0UHJvdG9idWYxDDAKBgNVBAsMA1JuRDESMBAGA1UEAwwJbG9jYWxob3N0 +MSMwIQYJKoZIhvcNAQkBFhRxdHByb3RvYnVmQGdtYWlsLmNvbTAeFw0xOTA0MjMx +NTI5MzNaFw0yMDA0MjIxNTI5MzNaMIGLMQswCQYDVQQGEwJERTEPMA0GA1UECAwG +QmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xEzARBgNVBAoMClF0UHJvdG9idWYxDDAK +BgNVBAsMA1JuRDESMBAGA1UEAwwJbG9jYWxob3N0MSMwIQYJKoZIhvcNAQkBFhRx +dHByb3RvYnVmQGdtYWlsLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBANCB7zdc6v+gsYCsGIYsT3iyGPgvFG7cJJWnQO9iW6Tn/kBcreYuCdVSSODK +/NtPaA1r8j9FCDvLkzewNQ2Idv08/oKBYfOaVtQvh1cn7ktr1usiXtYv16cimeKk +8iYbiczkZOah2xq+ivm9+05WkYTzcSjBpXg19894024GHd7oRV9G5MCr760k8YLM +ALnoPpTl0yfs5cEcTybqvZFZNqkHDX2ziEbcF/mVcxcyEsmenbX6MI0easg2qZeq +Sb7AW7tIMVoWUxDkUIor4vogbgU2IljAjzn0i+fPncB41TU5IiIU35vO67kFBXyI +Ms3LpN1+Siz5HYHjwaWl0ecebuT83kP33VNc1ULkKJG5UbZUYfgZjUwZPgFFzVzQ +cif0mhYj9s5Nmn6Q/twxeIXOIZAQdLOq625Wwx8bh+mGaV5mtw3wtXJjbceGa1z/ +Pnni4x2B7IfSiOzGLZZNRRHIjUskeONHUHn8YBrLLg5RT+tvPnGDVPh0cKEH2P4F +cNRPmaqg75siFoJ+m3DlFM952tRcfzJumgbUfEnrL8bxTZPYVoq22qCDm3UGNW8n +pthv8Y2hemv6V9lF050z2vpL2DtU9RmtkBWx7ipPUdsEOm4e0rdOCk7zo8IAiWMQ +6o1L23IPTsqaEpqk3b7tT+5dtLkpeomAT8Hz91ChWUb6jrTVAgMBAAGjUDBOMB0G +A1UdDgQWBBQIb2RjqkeMsUjH9QJ5BYnAtJ/vojAfBgNVHSMEGDAWgBQIb2RjqkeM +sUjH9QJ5BYnAtJ/vojAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQDG +2x+I9C+4XFCpg9KVA+BBi6+7yi4ulH0yv7W3hNWBV2MxTpvVN6RIt8xI1sPFXc2T +g2wCIAIPGIPNDe8hO3gcfIIe059P+J3ZNjybUg5p6CR9O7kqgqV/nL4gVRuBJeYq +6YLr1lKL9r3Zdbkq1tcaCaj816zdXVky0us72XP28/xJc96crgKzDI69vESy5jq6 +QT/HoBwYiSaWXNgb0zJzc//e0upXSLeTkYizAJ5OGkQ/MQYE7gDvtPlGVhQ0rnl/ +FLsiZJokuxtLOTvYJ8Gynjz3QwbClN/bmUbOgD0fqW6BEZyZSJ4zCz0BJnwg46gc +IN+p6vi50MG4ZcJcnMl/3tAxt2RxHNLi0j21NSLyFj60gK+vL3/zzkdYF9ZxX1L+ +dqhTqioCVrV96rJIQbz6JrbFhUCdyEHYG7yi6LxHTUex33XouhGAfZ0lri5wWZq8 +0Rx8PEZ7SbjARtnvA7uXIAfgD+n3oqnkg9IDPH8PbdRcJrAdje3O2c1+OzTAC8ni +czaCWG748gfZPe0JpENP7P56RTh9avj4sHISCx4r+sh0lruLp2JZPr9qtw09uWlq +Mn58bcnDu9RjVfPXk43s9WfJC9XII+JoNcW3iJDSHxQb9XLvwR9ntWhkVvOKenPP +b00kWr6FfId6fiOmUww5WkW+Wtt4XOYsypaN+DskeA== +-----END CERTIFICATE----- diff --git a/tests/auto/qmlnetwork/qqmlsslconfiguration/data/key.pem b/tests/auto/qmlnetwork/qqmlsslconfiguration/data/key.pem new file mode 100644 index 0000000000..176f5210c1 --- /dev/null +++ b/tests/auto/qmlnetwork/qqmlsslconfiguration/data/key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +0mVZG9D69wbsZefVDJii9NLvWThGog== +-----END PRIVATE KEY----- diff --git a/tests/auto/qmlnetwork/qqmlsslconfiguration/qml/tst_sslconfiguration.qml b/tests/auto/qmlnetwork/qqmlsslconfiguration/qml/tst_sslconfiguration.qml new file mode 100644 index 0000000000..f4404e5557 --- /dev/null +++ b/tests/auto/qmlnetwork/qqmlsslconfiguration/qml/tst_sslconfiguration.qml @@ -0,0 +1,158 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +import QtQuick +import QtTest +import QtNetwork +import QmlTestUri + +Item { + id: root + + property sslConfiguration userSslObject; + property sslConfiguration defaultSslObject; + property sslDtlsConfiguration dtlsDefaultSslObj; + property sslKey key; + + TestCase { + name: "qtSslConfigurationTest" + + function test_1initialization() { + userSslObject.peerVerifyMode = SslSocket.QueryPeer + userSslObject.peerVerifyDepth = 0 + userSslObject.protocol = Ssl.TlsV1_2 + userSslObject.sslOptions = [Ssl.SslOptionDisableEmptyFragments] + + defaultSslObject.peerVerifyMode = SslSocket.VerifyPeer; + dtlsDefaultSslObj.peerVerifyMode = SslSocket.VerifyNone; + + key.keyFile = ":/data/key.pem" + key.keyAlgorithm = Ssl.Rsa + key.keyFormat = Ssl.Pem + + // Call invokable functions for ssl object + userSslObject.setCertificateFiles([":/data/cert.pem"]) + userSslObject.setPrivateKey(key) + } + + function test_sslEnumsFields_data() { + return [ + // enum SslProtocol + { tag: "SslProtocol.TlsV1_2OrLater", + field: Ssl.TlsV1_2OrLater, answer: 7 }, + { tag: "SslProtocol.DtlsV1_2", + field: Ssl.DtlsV1_2, answer: 10 }, + { tag: "SslProtocol.DtlsV1_2OrLater", + field: Ssl.DtlsV1_2OrLater, answer: 11}, + { tag: "SslProtocol.TlsV1_3", + field: Ssl.TlsV1_3, answer: 12 }, + { tag: "SslProtocol.TlsV1_3OrLater", + field: Ssl.TlsV1_3OrLater, answer: 13 }, + { tag: "SslProtocol.UnknownProtocol", + field: Ssl.UnknownProtocol, answer: -1 }, + + // enum EncodingFormat + { tag: "EncodingFormat.Pem", + field: Ssl.Pem, answer: 0 }, + { tag: "EncodingFormat.Der", + field: Ssl.Der, answer: 1 }, + + // enum KeyType + { tag: "KeyType.key", + field: Ssl.PrivateKey, answer: 0 }, + { tag: "KeyType.PublicKey", + field: Ssl.PublicKey, answer: 1 }, + + //enum KeyAlgorithm + { tag: "KeyAlgorithm.Opaque", + field: Ssl.Opaque, answer: 0 }, + { tag: "KeyAlgorithm.Rsa", + field: Ssl.Rsa, answer: 1 }, + { tag: "KeyAlgorithm.Dsa", + field: Ssl.Dsa, answer: 2 }, + { tag: "KeyAlgorithm.Ec", + field: Ssl.Ec, answer: 3 }, + { tag: "KeyAlgorithm.Dh", + field: Ssl.Dh, answer: 4 }, + + // enum SslOption + { tag: "SslOption.SslOptionDisableEmptyFragments", + field: Ssl.SslOptionDisableEmptyFragments, answer: 0x01 }, + { tag: "SslOption.SslOptionDisableSessionTickets", + field: Ssl.SslOptionDisableSessionTickets, answer: 0x02 }, + { tag: "SslOption.SslOptionDisableCompression", + field: Ssl.SslOptionDisableCompression, answer: 0x04 }, + { tag: "SslOption.SslOptionDisableServerNameIndication", + field: Ssl.SslOptionDisableServerNameIndication, answer: 0x08 }, + { tag: "SslOption.SslOptionDisableLegacyRenegotiation", + field: Ssl.SslOptionDisableLegacyRenegotiation, answer: 0x10 }, + { tag: "SslOption.SslOptionDisableSessionSharing", + field: Ssl.SslOptionDisableSessionSharing, answer: 0x20 }, + { tag: "SslOption.SslOptionDisableSessionPersistence", + field: Ssl.SslOptionDisableSessionPersistence, answer: 0x40 }, + { tag: "SslOption.SslOptionDisableServerCipherPreference", + field: Ssl.SslOptionDisableServerCipherPreference, answer: 0x80 }, + + // enum PeerVerifyMode + { tag: "PeerVerifyMode.VerifyNone", + field: SslSocket.VerifyNone, answer: 0 }, + { tag: "PeerVerifyMode.QueryPeer", + field: SslSocket.QueryPeer, answer: 1 }, + { tag: "PeerVerifyMode.VerifyPeer", + field: SslSocket.VerifyPeer, answer: 2 }, + { tag: "PeerVerifyMode.AutoVerifyPeer", + field: SslSocket.AutoVerifyPeer, answer: 3 } + ] + } + + function test_sslEnumsFields(data) { + compare(data.field, data.answer) + } + + function test_sslConfigurationFields_data() { + return [ + { tag: "userSslObject is creatable object", + field: typeof userSslObject, answer: "object" }, + { tag: "defaultSslObject is creatable object", + field: typeof defaultSslObject, answer: "object" }, + { tag: "dtlsDefaultSslObj is creatable object", + field: typeof dtlsDefaultSslObj, answer: "object" }, + { tag: "key is creatable object", + field: typeof key, answer: "object" }, + { tag: "userSslObject.sslOptions is creatable object", + field: typeof userSslObject.sslOptions, + answer: "object" }, + + // userSslObject + { tag: "userSslObject.peerVerifyMode == Ssl.QueryPeer", + field: userSslObject.peerVerifyMode, answer: SslSocket.QueryPeer }, + // defaultSslObject + { tag: "defaultSslObject.peerVerifyMode == Ssl.VerifyPeer", + field: defaultSslObject.peerVerifyMode, answer: SslSocket.VerifyPeer }, + // dtlsDefaultSslObj + { tag: "dtlsDefaultSslObj.peerVerifyMode == Ssl.VerifyNone", + field: dtlsDefaultSslObj.peerVerifyMode, + answer: SslSocket.VerifyNone }, + + // userSslObject + { tag: "userSslObject.peerVerifyDepth == 0", + field: userSslObject.peerVerifyDepth, answer: 0 }, + { tag: "userSslObject.sslOptions == Ssl.SslOptionDisableEmptyFragments", + field: userSslObject.sslOptions[0], + answer: Ssl.SslOptionDisableEmptyFragments }, + { tag: "SSL configuration protocol == SslProtocol.TlsV1_2", + field: userSslObject.protocol, answer: Ssl.TlsV1_2 }, + { tag: "key.keyFile == :/data/key.pem", + field: key.keyFile, answer: ":/data/key.pem" }, + { tag: "key.keyAlgorithm == Ssl.Rsa", + field: key.keyAlgorithm, answer: Ssl.Rsa }, + { tag: "key.keyFormat == Ssl.Pem", + field: key.keyFormat, answer: Ssl.Pem } + ] + } + + function test_sslConfigurationFields(data) { + compare(data.field, data.answer) + } + } +} diff --git a/tests/auto/qmlnetwork/qqmlsslconfiguration/tst_sslconfiguration_qml.cpp b/tests/auto/qmlnetwork/qqmlsslconfiguration/tst_sslconfiguration_qml.cpp new file mode 100644 index 0000000000..eded07c9ac --- /dev/null +++ b/tests/auto/qmlnetwork/qqmlsslconfiguration/tst_sslconfiguration_qml.cpp @@ -0,0 +1,6 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include <QtQuickTest> + +QUICK_TEST_MAIN(tst_sslconfiguration_qml) |