It's not clear to me if dropping support for this functionality was intentional.

Chain of events:

- #21689 removed test coverage due to a misunderstanding due, I believe, to this functionality being generally supported by all platforms except macOS which does not and returns a different format
- #21756 removed support and caused this regression
- #21690 restores the test coverage that would have caught this regression

Currently, neither the test coverage before #21689 nor the coverage restored by #21690 pass since the merge of #21756.

{
    switch (m_net) {
    case NET_IPV4:
        return IPv4ToString(m_addr);
    case NET_IPV6: {
        return IPv6ToString(m_addr);
    }
    case NET_ONION:
        switch (m_addr.size()) {
        case ADDR_TORV2_SIZE:
            return EncodeBase32(m_addr) + ".onion";
        case ADDR_TORV3_SIZE: {
            uint8_t checksum[torv3::CHECKSUM_LEN];
            torv3::Checksum(m_addr, checksum);
            
            prevector<torv3::TOTAL_LEN, uint8_t> address{m_addr.begin(), m_addr.end()};
            address.insert(address.end(), checksum, checksum + torv3::CHECKSUM_LEN);
            address.insert(address.end(), torv3::VERSION, torv3::VERSION + sizeof(torv3::VERSION));
            return EncodeBase32(address) + ".onion";
        }
        default:
            assert(false);
        }
    case NET_I2P:
        return EncodeBase32(m_addr, false ) + ".b32.i2p";
    case NET_CJDNS:
        return IPv6ToString(m_addr);
    case NET_INTERNAL: