@@ -765,6 +765,217 @@ void main() {
765765 });
766766 });
767767
768+ group ('LogInterceptor' , () {
769+ test ('requestUrl controls URL logging in requests' , () async {
770+ final dio = Dio ();
771+ dio.options.baseUrl = MockAdapter .mockBase;
772+ dio.httpClientAdapter = MockAdapter ();
773+
774+ final logs = < String > [];
775+ dio.interceptors.add (
776+ LogInterceptor (
777+ requestUrl: true ,
778+ requestHeader: false ,
779+ requestBody: false ,
780+ request: false ,
781+ responseUrl: false ,
782+ responseHeader: false ,
783+ responseBody: false ,
784+ logPrint: (o) => logs.add (o.toString ()),
785+ ),
786+ );
787+
788+ await dio.get ('/test' );
789+
790+ expect (logs.any ((log) => log.contains ('*** Request ***' )), true );
791+ expect (logs.any ((log) => log.contains ('uri:' )), true );
792+ expect (logs.any ((log) => log.contains ('/test' )), true );
793+ });
794+
795+ test ('requestUrl=false prevents URL logging in requests' , () async {
796+ final dio = Dio ();
797+ dio.options.baseUrl = MockAdapter .mockBase;
798+ dio.httpClientAdapter = MockAdapter ();
799+
800+ final logs = < String > [];
801+ dio.interceptors.add (
802+ LogInterceptor (
803+ requestUrl: false ,
804+ requestHeader: false ,
805+ requestBody: false ,
806+ request: false ,
807+ responseUrl: false ,
808+ responseHeader: false ,
809+ responseBody: false ,
810+ logPrint: (o) => logs.add (o.toString ()),
811+ ),
812+ );
813+
814+ await dio.get ('/test' );
815+
816+ expect (logs.any ((log) => log.contains ('*** Request ***' )), false );
817+ expect (logs.any ((log) => log.contains ('uri:' )), false );
818+ });
819+
820+ test ('responseUrl controls URL logging in responses' , () async {
821+ final dio = Dio ();
822+ dio.options.baseUrl = MockAdapter .mockBase;
823+ dio.httpClientAdapter = MockAdapter ();
824+
825+ final logs = < String > [];
826+ dio.interceptors.add (
827+ LogInterceptor (
828+ requestUrl: false ,
829+ requestHeader: false ,
830+ requestBody: false ,
831+ request: false ,
832+ responseUrl: true ,
833+ responseHeader: false ,
834+ responseBody: false ,
835+ logPrint: (o) => logs.add (o.toString ()),
836+ ),
837+ );
838+
839+ await dio.get ('/test' );
840+
841+ expect (logs.any ((log) => log.contains ('*** Response ***' )), true );
842+ expect (logs.any ((log) => log.contains ('uri:' )), true );
843+ expect (logs.any ((log) => log.contains ('/test' )), true );
844+ });
845+
846+ test ('responseUrl=false prevents URL logging in responses' , () async {
847+ final dio = Dio ();
848+ dio.options.baseUrl = MockAdapter .mockBase;
849+ dio.httpClientAdapter = MockAdapter ();
850+
851+ final logs = < String > [];
852+ dio.interceptors.add (
853+ LogInterceptor (
854+ requestUrl: false ,
855+ requestHeader: false ,
856+ requestBody: false ,
857+ request: false ,
858+ responseUrl: false ,
859+ responseHeader: false ,
860+ responseBody: false ,
861+ logPrint: (o) => logs.add (o.toString ()),
862+ ),
863+ );
864+
865+ await dio.get ('/test' );
866+
867+ expect (logs.any ((log) => log.contains ('*** Response ***' )), false );
868+ });
869+
870+ test ('requestUrl and responseUrl work independently' , () async {
871+ final dio = Dio ();
872+ dio.options.baseUrl = MockAdapter .mockBase;
873+ dio.httpClientAdapter = MockAdapter ();
874+
875+ // Test: requestUrl=true, responseUrl=false
876+ final logs1 = < String > [];
877+ dio.interceptors.clear ();
878+ dio.interceptors.add (
879+ LogInterceptor (
880+ requestUrl: true ,
881+ requestHeader: false ,
882+ requestBody: false ,
883+ request: false ,
884+ responseUrl: false ,
885+ responseHeader: false ,
886+ responseBody: false ,
887+ logPrint: (o) => logs1.add (o.toString ()),
888+ ),
889+ );
890+
891+ await dio.get ('/test' );
892+
893+ expect (logs1.any ((log) => log.contains ('*** Request ***' )), true );
894+ expect (logs1.any ((log) => log.contains ('*** Response ***' )), false );
895+
896+ // Test: requestUrl=false, responseUrl=true
897+ final logs2 = < String > [];
898+ dio.interceptors.clear ();
899+ dio.interceptors.add (
900+ LogInterceptor (
901+ requestUrl: false ,
902+ requestHeader: false ,
903+ requestBody: false ,
904+ request: false ,
905+ responseUrl: true ,
906+ responseHeader: false ,
907+ responseBody: false ,
908+ logPrint: (o) => logs2.add (o.toString ()),
909+ ),
910+ );
911+
912+ await dio.get ('/test' );
913+
914+ expect (logs2.any ((log) => log.contains ('*** Request ***' )), false );
915+ expect (logs2.any ((log) => log.contains ('*** Response ***' )), true );
916+ });
917+
918+ test ('requestUrl can be combined with other request flags' , () async {
919+ final dio = Dio ();
920+ dio.options.baseUrl = MockAdapter .mockBase;
921+ dio.httpClientAdapter = MockAdapter ();
922+
923+ final logs = < String > [];
924+ dio.interceptors.add (
925+ LogInterceptor (
926+ requestUrl: true ,
927+ requestHeader: true ,
928+ requestBody: true ,
929+ request: true ,
930+ responseUrl: false ,
931+ responseHeader: false ,
932+ responseBody: false ,
933+ logPrint: (o) => logs.add (o.toString ()),
934+ ),
935+ );
936+
937+ await dio.get ('/test' );
938+
939+ expect (logs.any ((log) => log.contains ('*** Request ***' )), true );
940+ expect (logs.any ((log) => log.contains ('uri:' )), true );
941+ expect (logs.any ((log) => log.contains ('method:' )), true );
942+ expect (logs.any ((log) => log.contains ('headers:' )), true );
943+ });
944+
945+ test ('responseUrl can be combined with other response flags' , () async {
946+ final dio = Dio ();
947+ dio.options.baseUrl = MockAdapter .mockBase;
948+ dio.httpClientAdapter = MockAdapter ();
949+
950+ final logs = < String > [];
951+ dio.interceptors.add (
952+ LogInterceptor (
953+ requestUrl: false ,
954+ requestHeader: false ,
955+ requestBody: false ,
956+ request: false ,
957+ responseUrl: true ,
958+ responseHeader: true ,
959+ responseBody: true ,
960+ logPrint: (o) => logs.add (o.toString ()),
961+ ),
962+ );
963+
964+ await dio.get ('/test' );
965+
966+ expect (logs.any ((log) => log.contains ('*** Response ***' )), true );
967+ expect (logs.any ((log) => log.contains ('uri:' )), true );
968+ expect (logs.any ((log) => log.contains ('statusCode:' )), true );
969+ expect (logs.any ((log) => log.contains ('headers:' )), true );
970+ });
971+
972+ test ('default values enable requestUrl and responseUrl' , () {
973+ final interceptor = LogInterceptor ();
974+ expect (interceptor.requestUrl, true );
975+ expect (interceptor.responseUrl, true );
976+ });
977+ });
978+
768979 test ('Size of Interceptors' , () {
769980 final interceptors1 = Dio ().interceptors;
770981 expect (interceptors1.length, equals (1 ));
0 commit comments