コード例 #1
0
ファイル: test_beaconing.py プロジェクト: adrozdovbering/maas
 def test__raises_when_inner_encapsulation_is_not_bson(self):
     self.write_secret()
     payload = fernet_encrypt_psk(compress(b"\n\n"), raw=True)
     packet = _make_beacon_payload(payload=payload)
     with ExpectedException(InvalidBeaconingPacket,
                            ".*beacon payload is not BSON.*"):
         read_beacon_payload(packet)
コード例 #2
0
ファイル: test_beaconing.py プロジェクト: ocni-dtu/maas
 def test__raises_when_inner_payload_does_not_decrypt(self):
     self.write_secret()
     packet = _make_beacon_payload(payload=b"\xfe")
     with ExpectedException(
         InvalidBeaconingPacket, ".*Failed to decrypt.*"
     ):
         read_beacon_payload(packet)
コード例 #3
0
ファイル: test_beaconing.py プロジェクト: adrozdovbering/maas
 def test__raises_when_inner_encapsulation_does_not_decompress(self):
     self.write_secret()
     packet = _make_beacon_payload(
         payload=fernet_encrypt_psk('\n\n', raw=True))
     with ExpectedException(InvalidBeaconingPacket,
                            ".*Failed to decompress.*"):
         read_beacon_payload(packet)
コード例 #4
0
ファイル: test_beaconing.py プロジェクト: adrozdovbering/maas
 def test__creates_packet_that_can_decode(self):
     self.write_secret()
     random_type = random.choice(list(BEACON_TYPES.keys()))
     random_key = factory.make_string(prefix="_")
     random_value = factory.make_string()
     packet_bytes, _, _, _ = create_beacon_payload(
         random_type, payload={random_key: random_value})
     decrypted = read_beacon_payload(packet_bytes)
     self.assertThat(decrypted.type, Equals(random_type))
     self.assertThat(decrypted.payload[random_key], Equals(random_value))
コード例 #5
0
    def datagramReceived(self, datagram, addr):
        """Called by Twisted when a UDP datagram is received.

        Note: In the typical use case, the MAAS server will ignore packets
        coming into this method. We need to listen to the socket normally,
        however, so that the underlying network stack will send ICMP
        destination (port) unreachable replies to anyone trying to send us
        beacons. However, at other times, (such as while running the test
        commands), we *will* listen to the socket layer for beacons.
        """
        if self.process_incoming is True:
            context = {"source_ip": addr[0], "source_port": addr[1]}
            beacon_json = beacon_to_json(read_beacon_payload(datagram))
            beacon_json.update(context)
            self.beaconReceived(beacon_json)
コード例 #6
0
ファイル: test_beaconing.py プロジェクト: adrozdovbering/maas
 def test__raises_when_version_incorrect(self):
     packet = _make_beacon_payload(version=0xfe)
     with ExpectedException(InvalidBeaconingPacket,
                            ".*Unknown beacon version.*"):
         read_beacon_payload(packet)
コード例 #7
0
ファイル: test_beaconing.py プロジェクト: adrozdovbering/maas
 def test__raises_if_payload_too_small(self):
     packet = _make_beacon_payload(payload=b'1234')[:6]
     with ExpectedException(InvalidBeaconingPacket,
                            ".*expected 4 bytes, got 2 bytes.*"):
         read_beacon_payload(packet)
コード例 #8
0
ファイル: test_beaconing.py プロジェクト: adrozdovbering/maas
 def test__raises_if_packet_too_small(self):
     with ExpectedException(InvalidBeaconingPacket,
                            ".*packet must be at least 4 bytes.*"):
         read_beacon_payload(b"")