| 
									
										
										
										
											2023-07-31 16:34:31 -03:00
										 |  |  | package dnsserver
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import (
 | 
					
						
							| 
									
										
										
										
											2025-05-22 16:40:13 +03:00
										 |  |  | 	"net"
 | 
					
						
							| 
									
										
										
										
											2023-07-31 16:34:31 -03:00
										 |  |  | 	"testing"
 | 
					
						
							|  |  |  | )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestDoQWriterAddPrefix(t *testing.T) {
 | 
					
						
							|  |  |  | 	byteArray := []byte{0x1, 0x2, 0x3}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	byteArrayWithPrefix := AddPrefix(byteArray)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if len(byteArrayWithPrefix) != 5 {
 | 
					
						
							|  |  |  | 		t.Error("Expected byte array with prefix to have length of 5")
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	size := int16(byteArrayWithPrefix[0])<<8 | int16(byteArrayWithPrefix[1])
 | 
					
						
							|  |  |  | 	if size != 3 {
 | 
					
						
							|  |  |  | 		t.Errorf("Expected prefixed size to be 3, got: %d", size)
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | }
 | 
					
						
							| 
									
										
										
										
											2025-05-22 16:40:13 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | func TestDoQWriter_ResponseWriterMethods(t *testing.T) {
 | 
					
						
							|  |  |  | 	localAddr := &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 1234}
 | 
					
						
							|  |  |  | 	remoteAddr := &net.UDPAddr{IP: net.ParseIP("8.8.8.8"), Port: 53}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	writer := &DoQWriter{
 | 
					
						
							|  |  |  | 		localAddr:  localAddr,
 | 
					
						
							|  |  |  | 		remoteAddr: remoteAddr,
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if err := writer.TsigStatus(); err != nil {
 | 
					
						
							|  |  |  | 		t.Errorf("TsigStatus() returned an error: %v", err)
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// this is a no-op, just call it
 | 
					
						
							|  |  |  | 	writer.TsigTimersOnly(true)
 | 
					
						
							|  |  |  | 	writer.TsigTimersOnly(false)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// this is a no-op, just call it
 | 
					
						
							|  |  |  | 	writer.Hijack()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if addr := writer.LocalAddr(); addr != localAddr {
 | 
					
						
							|  |  |  | 		t.Errorf("LocalAddr() = %v, want %v", addr, localAddr)
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if addr := writer.RemoteAddr(); addr != remoteAddr {
 | 
					
						
							|  |  |  | 		t.Errorf("RemoteAddr() = %v, want %v", addr, remoteAddr)
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | }
 |