123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447 |
- ;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
- ;;;
- ;;; This file is part of GNU Guix.
- ;;;
- ;;; GNU Guix is free software; you can redistribute it and/or modify it
- ;;; under the terms of the GNU General Public License as published by
- ;;; the Free Software Foundation; either version 3 of the License, or (at
- ;;; your option) any later version.
- ;;;
- ;;; GNU Guix is distributed in the hope that it will be useful, but
- ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
- ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;;; GNU General Public License for more details.
- ;;;
- ;;; You should have received a copy of the GNU General Public License
- ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
- (define-module (tests services telephony)
- #:use-module (gnu build jami-service)
- #:use-module (gnu services telephony)
- #:use-module (srfi srfi-64))
- ;;; Tests for the (gnu services telephony) and related modules.
- (test-begin "jami-service")
- (define parse-dbus-reply
- (@@ (gnu build jami-service) parse-dbus-reply))
- (define parse-account-ids
- (@@ (gnu build jami-service) parse-account-ids))
- (define parse-account-details
- (@@ (gnu build jami-service) parse-account-details))
- (define parse-contacts
- (@@ (gnu build jami-service) parse-contacts))
- (define jami-account->alist
- (@@ (gnu services telephony) jami-account->alist))
- ;; $ dbus-send --print-reply --dest="cx.ring.Ring" \
- ;; "/cx/ring/Ring/ConfigurationManager" \
- ;; "cx.ring.Ring.ConfigurationManager.getAccountList"
- (define getAccountList-reply "\
- method return time=1622217253.386711 sender=:1.7 -> destination=:1.14 serial=140 reply_serial=2
- array [
- string \"addf37fbb558d6a0\"
- string \"d5cbeb7d08c98a65\"
- string \"398af0c6b74ce101\"
- ]
- ")
- (test-equal "parse-account-ids"
- '("addf37fbb558d6a0" "d5cbeb7d08c98a65" "398af0c6b74ce101")
- (parse-account-ids getAccountList-reply))
- ;; $ dbus-send --print-reply --dest="cx.ring.Ring" \
- ;; "/cx/ring/Ring/ConfigurationManager" \
- ;; "cx.ring.Ring.ConfigurationManager.getAccountDetails" \
- ;; 'string:398af0c6b74ce101'
- (define getAccountDetails-reply "\
- method return time=1622254991.789588 sender=:1.7 -> destination=:1.19 serial=145 reply_serial=2
- array [
- dict entry(
- string \"Account.accountDiscovery\"
- string \"false\"
- )
- dict entry(
- string \"Account.accountPublish\"
- string \"false\"
- )
- dict entry(
- string \"Account.activeCallLimit\"
- string \"-1\"
- )
- dict entry(
- string \"Account.alias\"
- string \"some-rendezvous-point-name\"
- )
- dict entry(
- string \"Account.allModeratorEnabled\"
- string \"true\"
- )
- dict entry(
- string \"Account.allowCertFromContact\"
- string \"true\"
- )
- dict entry(
- string \"Account.allowCertFromHistory\"
- string \"true\"
- )
- dict entry(
- string \"Account.allowCertFromTrusted\"
- string \"true\"
- )
- dict entry(
- string \"Account.archiveHasPassword\"
- string \"false\"
- )
- dict entry(
- string \"Account.audioPortMax\"
- string \"32766\"
- )
- dict entry(
- string \"Account.audioPortMin\"
- string \"16384\"
- )
- dict entry(
- string \"Account.autoAnswer\"
- string \"false\"
- )
- dict entry(
- string \"Account.defaultModerators\"
- string \"\"
- )
- dict entry(
- string \"Account.deviceID\"
- string \"94b4070fc7a8afa8482c777a9822c52e6af2e1bd\"
- )
- dict entry(
- string \"Account.deviceName\"
- string \"some-device\"
- )
- dict entry(
- string \"Account.dhtProxyListUrl\"
- string \"https://config.jami.net/proxyList\"
- )
- dict entry(
- string \"Account.displayName\"
- string \"some-rendezvous-point-name\"
- )
- dict entry(
- string \"Account.dtmfType\"
- string \"overrtp\"
- )
- dict entry(
- string \"Account.enable\"
- string \"true\"
- )
- dict entry(
- string \"Account.hasCustomUserAgent\"
- string \"false\"
- )
- dict entry(
- string \"Account.hostname\"
- string \"bootstrap.jami.net\"
- )
- dict entry(
- string \"Account.localInterface\"
- string \"default\"
- )
- dict entry(
- string \"Account.localModeratorsEnabled\"
- string \"true\"
- )
- dict entry(
- string \"Account.mailbox\"
- string \"\"
- )
- dict entry(
- string \"Account.managerUri\"
- string \"\"
- )
- dict entry(
- string \"Account.managerUsername\"
- string \"\"
- )
- dict entry(
- string \"Account.peerDiscovery\"
- string \"false\"
- )
- dict entry(
- string \"Account.presenceSubscribeSupported\"
- string \"true\"
- )
- dict entry(
- string \"Account.proxyEnabled\"
- string \"false\"
- )
- dict entry(
- string \"Account.proxyPushToken\"
- string \"\"
- )
- dict entry(
- string \"Account.proxyServer\"
- string \"dhtproxy.jami.net:[80-95]\"
- )
- dict entry(
- string \"Account.publishedAddress\"
- string \"\"
- )
- dict entry(
- string \"Account.publishedPort\"
- string \"5060\"
- )
- dict entry(
- string \"Account.publishedSameAsLocal\"
- string \"true\"
- )
- dict entry(
- string \"Account.rendezVous\"
- string \"true\"
- )
- dict entry(
- string \"Account.ringtoneEnabled\"
- string \"true\"
- )
- dict entry(
- string \"Account.ringtonePath\"
- string \"/usr/share/ring/ringtones/default.opus\"
- )
- dict entry(
- string \"Account.type\"
- string \"RING\"
- )
- dict entry(
- string \"Account.upnpEnabled\"
- string \"true\"
- )
- dict entry(
- string \"Account.useragent\"
- string \"\"
- )
- dict entry(
- string \"Account.username\"
- string \"ccb8bbe2382343f7feb140710ab48aaf1b55634e\"
- )
- dict entry(
- string \"Account.videoEnabled\"
- string \"true\"
- )
- dict entry(
- string \"Account.videoPortMax\"
- string \"65534\"
- )
- dict entry(
- string \"Account.videoPortMin\"
- string \"49152\"
- )
- dict entry(
- string \"DHT.PublicInCalls\"
- string \"true\"
- )
- dict entry(
- string \"DHT.port\"
- string \"7766\"
- )
- dict entry(
- string \"RingNS.account\"
- string \"3989b55313a911b6f0c004748b49b254f35c9ef6\"
- )
- dict entry(
- string \"RingNS.uri\"
- string \"\"
- )
- dict entry(
- string \"SRTP.enable\"
- string \"true\"
- )
- dict entry(
- string \"SRTP.keyExchange\"
- string \"sdes\"
- )
- dict entry(
- string \"SRTP.rtpFallback\"
- string \"false\"
- )
- dict entry(
- string \"STUN.enable\"
- string \"false\"
- )
- dict entry(
- string \"STUN.server\"
- string \"\"
- )
- dict entry(
- string \"TLS.certificateFile\"
- string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.crt\"
- )
- dict entry(
- string \"TLS.certificateListFile\"
- string \"\"
- )
- dict entry(
- string \"TLS.ciphers\"
- string \"\"
- )
- dict entry(
- string \"TLS.method\"
- string \"Automatic\"
- )
- dict entry(
- string \"TLS.negotiationTimeoutSec\"
- string \"-1\"
- )
- dict entry(
- string \"TLS.password\"
- string \"\"
- )
- dict entry(
- string \"TLS.privateKeyFile\"
- string \"/var/lib/jami/.local/share/jami/398af0c6b74ce101/ring_device.key\"
- )
- dict entry(
- string \"TLS.requireClientCertificate\"
- string \"true\"
- )
- dict entry(
- string \"TLS.serverName\"
- string \"\"
- )
- dict entry(
- string \"TLS.verifyClient\"
- string \"true\"
- )
- dict entry(
- string \"TLS.verifyServer\"
- string \"true\"
- )
- dict entry(
- string \"TURN.enable\"
- string \"true\"
- )
- dict entry(
- string \"TURN.password\"
- string \"ring\"
- )
- dict entry(
- string \"TURN.realm\"
- string \"ring\"
- )
- dict entry(
- string \"TURN.server\"
- string \"turn.jami.net\"
- )
- dict entry(
- string \"TURN.username\"
- string \"ring\"
- )
- ]
- ")
- (test-equal "parse-account-details; username, alias and display name"
- '("ccb8bbe2382343f7feb140710ab48aaf1b55634e" ;username
- "some-rendezvous-point-name" ;alias
- "some-rendezvous-point-name") ;displayName
- (let ((account-details (parse-account-details getAccountDetails-reply)))
- (list (assoc-ref account-details "Account.username")
- (assoc-ref account-details "Account.alias")
- (assoc-ref account-details "Account.displayName"))))
- (define getContacts-reply "\
- method return time=1627014042.752673 sender=:1.113 -> destination=:1.186 serial=220 reply_serial=2
- array [
- array [
- dict entry(
- string \"added\"
- string \"1578883327\"
- )
- dict entry(
- string \"confirmed\"
- string \"true\"
- )
- dict entry(
- string \"id\"
- string \"1c7d5a09464223442549fef172a3cf6f4de9b01c\"
- )
- ]
- array [
- dict entry(
- string \"added\"
- string \"1623107941\"
- )
- dict entry(
- string \"confirmed\"
- string \"true\"
- )
- dict entry(
- string \"id\"
- string \"5903c6c9ac5cb863c64e559add3d5d1c8c563449\"
- )
- ]
- array [
- dict entry(
- string \"added\"
- string \"1595996256\"
- )
- dict entry(
- string \"confirmed\"
- string \"true\"
- )
- dict entry(
- string \"id\"
- string \"ff2d72a548693214fb3a0f0f7a943b5e2bb9be03\"
- )
- ]
- ]")
- (test-equal "parse-account-contacts"
- '((("added" . "1578883327")
- ("confirmed" . "true")
- ("id" . "1c7d5a09464223442549fef172a3cf6f4de9b01c"))
- (("added" . "1623107941")
- ("confirmed" . "true")
- ("id" . "5903c6c9ac5cb863c64e559add3d5d1c8c563449"))
- (("added" . "1595996256")
- ("confirmed" . "true")
- ("id" . "ff2d72a548693214fb3a0f0f7a943b5e2bb9be03")))
- (parse-contacts getContacts-reply))
- (define getContacts-empty-reply "\
- method return time=1627400787.873988 sender=:1.1197 -> destination=:1.1463 serial=2127 reply_serial=2
- array [
- ]")
- (test-equal "parse-account-contacts, empty array"
- '()
- (parse-contacts getContacts-empty-reply))
- (define %dummy-jami-account (jami-account
- (archive "/tmp/dummy.gz")))
- (define %dummy-jami-account-2 (jami-account
- (archive "/tmp/dummy.gz")
- (rendezvous-point? #t)
- (peer-discovery? #f)
- (bootstrap-hostnames '("bootstrap.me"
- "fallback.another.host"))
- (name-server-uri "https://my.name.server")))
- (test-equal "jami-account->alist, no account detail value set"
- '()
- (jami-account->alist %dummy-jami-account))
- (test-equal "jami-account->alist, with account detail values"
- '(("Account.hostname" . "bootstrap.me;fallback.another.host")
- ("Account.peerDiscovery" . "false")
- ("Account.rendezVous" . "true")
- ("RingNS.uri" . "https://my.name.server"))
- (sort (jami-account->alist %dummy-jami-account-2)
- (lambda (x y)
- (string<=? (car x) (car y)))))
- (test-end)
|