
    P1i                     |    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlZ e       Z G d	 d
e      Zy)z
Management command to test web activity tracking functionality.

This command verifies that the UserActivityMiddleware properly tracks
activity for both API (JWT) and web (session) authenticated users.
    )BaseCommand)get_user_model)Client)cache)RefreshToken)	APIClientNc                       e Zd ZdZd Zd Zy)Commandz(Test web activity tracking functionalityc                 ,    |j                  ddd       y )Nz	--inspect
store_truez-Show detailed inspection of tracking behavior)actionhelp)add_argument)selfparsers     U/home/cursorai/projects/iching/main/management/commands/test_web_activity_tracking.pyadd_argumentszCommand.add_arguments   s    @ 	 	
    c                    | j                   j                  | j                  j                  d             t        j
                  j                  dddd      \  }}|rJ|j                  d       |j                          | j                   j                  d|j                          n(| j                   j                  d	|j                          t        j
                  j                  |j                  
      j                  d        t        j                          |j                          | j                   j                  d|j                           | j                   j                  d       | j                   j                  | j                  j#                  d             | j                   j                  d       t%               }| j                   j                  d       |j'                  d      }|j                          | j                   j                  d|j                           | j                   j                  d       |j)                  dd      }| j                   j                  d|        |r| j                   j                  d       	 |j'                  d      }| j                   j                  d|j*                          |j                          | j                   j                  d|j                           |j                   r5| j                   j                  | j                  j                  d             n4| j                   j                  | j                  j-                  d             | j                   j                  d       | j                   j                  | j                  j#                  d             | j                   j                  d       t        j
                  j                  |j                  
      j                  d        t        j                          |j                          t1               }	t3        j4                  |      }
t7        |
j8                        }| j                   j                  d|d d  d        |	j;                  d!| "       	 |	j'                  d#      }| j                   j                  d$|j*                          |j                          | j                   j                  d%|j                           |j                   r5| j                   j                  | j                  j                  d&             n4| j                   j                  | j                  j-                  d'             | j                   j                  d       | j                   j                  | j                  j#                  d)             | j                   j                  d       t        j
                  j                  |j                  
      j                  d        t        j                          |j                          |j)                  dd       |j'                  d      }|j                          |j                   }| j                   j                  d*|        t        j                          |	j'                  d#      }|j                          |j                   }| j                   j                  d+|        |r7|r5| j                   j                  | j                  j                  d,             n4| j                   j                  | j                  j-                  d-             |d.   r| j                   j                  d       | j                   j                  | j                  j#                  d/             | j                   j                  d       d0d1lm} d0d2l m!}  |       } |d3 4      }g d5}|D ]J  }|j'                  |      }|jE                  |      }|rd6nd7}| j                   j                  | d8|        L | j                   j                  d       | j                   j                  | j                  j                  d9             | j                   j                  d       |r,|jG                          | j                   j                  d:       y y # t.        $ r)}| j                   j                  d|        Y d }~d }~ww xY w# t.        $ r)}| j                   j                  d(|        Y d }~d }~ww xY w);Nz Testing web activity tracking...
1234567890zwebtest@example.comT)email	is_active)phonedefaultstestpass123zCreated test user: zUsing existing test user: )pk)last_active_datezInitial last_active_date: z3
==================================================z"Test 1: Web Session Authenticationz2==================================================z&Testing unauthenticated web request.../zAfter unauthenticated request: zTesting web login...)r   passwordzLogin successful: z.Testing authenticated web request to /bazi/.../bazi/zResponse status: zAfter web session request: u   ✅ Web session tracking WORKS!u   ❌ Web session tracking FAILEDzWeb request failed: zTest 2: API JWT AuthenticationzGenerated JWT token: 2   z...zBearer )HTTP_AUTHORIZATION
/api/bazi/zAPI response status: zAfter API JWT request: u   ✅ API JWT tracking WORKS!u   ❌ API JWT tracking FAILEDzAPI request failed: z Test 3: Mixed Web + API RequestszAfter web request: zAfter API request: u   ✅ Mixed tracking WORKS!u   ❌ Mixed tracking has issuesinspectz$Test 4: Request Filtering Inspectionr   )UserActivityMiddleware)RequestFactoryc                      y )N )rs    r   <lambda>z Command.handle.<locals>.<lambda>   s    tr   )get_response)r   r    r#   z/static/css/style.cssz/media/image.pngz/favicon.icoz/health/u	   ✅ TRACKu   ❌ SKIPz: z!Activity tracking test completed!zCleaned up test user)$stdoutwritestyleSUCCESSUserobjectsget_or_createset_passwordsaver   filterr   updater   clearrefresh_from_dbr   WARNINGr   getloginstatus_codeERROR	Exceptionr   r   for_userstraccess_tokencredentialsmain.middlewarer%   django.testr&   should_track_requestdelete)r   argsoptions	test_usercreated
web_clientresponselogin_successe
api_clientrefreshrA   web_responseweb_timeapi_responseapi_timer%   r&   factory
middlewaretest_requestspathrequestshould_trackstatuss                            r   handlezCommand.handle   sJ   $**,,-OPQ "\\77.! 8 
	7 ""=1NNKK 3IOO3DEFKK :9??:KLM 	y||,33T3J!!#6y7Q7Q6RST 	-($**,,-QRS&!X
 	BC>>#&!!#;I<V<V;WXY 	01"((|m(T.}o>?KKNO>%>>(3!!$5h6J6J5K"LM))+!!$?	@Z@Z?["\]--KK%%djj&8&89Z&[\KK%%djj&6&67X&YZ 	-($**,,-MNO&! 	y||,33T3J!!#[
 ''	27//01,s2C1DCHI 	GL>2JK	:!~~l3HKK 5h6J6J5KLM%%'KK 7	8R8R7STU))!!$**"4"45R"ST!!$**"2"23P"QR 	-($**,,-OPQ&! 	y||,33T3J!!# 	|mD!~~h/!!#--/z:; 	!~~l3!!#--/z:;KKdjj001LMNKKdjj../NOP 9KKm,KKdjj001WXYKKf%>2$&G/^LJM &!++d+)>>wG(4*!!VHBtf"56	 & 	-($**,,-PQR&! KK45 M  >!!$8"<==>F  	:KK 4QC899	:s2   C&d 3C&d8 	d5d00d58	e*e%%e*N)__name__
__module____qualname__r   r   r\   r(   r   r   r
   r
      s    5D
b6r   r
   )__doc__django.core.management.baser   django.contrib.authr   rD   r   django.core.cacher   rest_framework_simplejwt.tokensr   rest_framework.testr   jsonr0   r
   r(   r   r   <module>rg      s7    4 .  # 8 ) l6k l6r   