Add some api integration tests (#18872)
depends on #18871 Added some api integration tests to help testing of #18798. Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		
							parent
							
								
									18622a0705
								
							
						
					
					
						commit
						a577214760
					
				
					 17 changed files with 2225 additions and 289 deletions
				
			
		| 
						 | 
				
			
			@ -3,9 +3,12 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  issue_id: 1
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 0
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -13,9 +16,12 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a12
 | 
			
		||||
  repo_id: 2
 | 
			
		||||
  issue_id: 4
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 0
 | 
			
		||||
  name: attach2
 | 
			
		||||
  download_count: 1
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -23,9 +29,12 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a13
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  issue_id: 2
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 1
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -33,9 +42,12 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a14
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  issue_id: 3
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 1
 | 
			
		||||
  name: attach2
 | 
			
		||||
  download_count: 1
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -43,9 +55,12 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a15
 | 
			
		||||
  repo_id: 2
 | 
			
		||||
  issue_id: 4
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 0
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -53,9 +68,12 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a16
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  issue_id: 5
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 2
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -63,9 +81,12 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a17
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  issue_id: 5
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 2
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -73,34 +94,49 @@
 | 
			
		|||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a18
 | 
			
		||||
  repo_id: 3
 | 
			
		||||
  issue_id: 6
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 0
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 9
 | 
			
		||||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a19
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  issue_id: 0
 | 
			
		||||
  release_id: 1
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 0
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 10
 | 
			
		||||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a20
 | 
			
		||||
  repo_id: 0 # TestGetAttachment/NotLinked
 | 
			
		||||
  issue_id: 0
 | 
			
		||||
  release_id: 0
 | 
			
		||||
  uploader_id: 8
 | 
			
		||||
  comment_id: 0
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 11
 | 
			
		||||
  uuid: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a21
 | 
			
		||||
  repo_id: 40
 | 
			
		||||
  issue_id: 0
 | 
			
		||||
  release_id: 2
 | 
			
		||||
  uploader_id: 0
 | 
			
		||||
  comment_id: 0
 | 
			
		||||
  name: attach1
 | 
			
		||||
  download_count: 0
 | 
			
		||||
  size: 0
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,208 +3,287 @@
 | 
			
		|||
  repo_id: 1
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 1
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue1
 | 
			
		||||
  content: content for the first issue
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 2
 | 
			
		||||
  created_unix: 946684800
 | 
			
		||||
  updated_unix: 978307200
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 2
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  index: 2
 | 
			
		||||
  poster_id: 1
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue2
 | 
			
		||||
  content: content for the second issue
 | 
			
		||||
  milestone_id: 1
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: true
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684810
 | 
			
		||||
  updated_unix: 978307190
 | 
			
		||||
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 3
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  index: 3
 | 
			
		||||
  poster_id: 1
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue3
 | 
			
		||||
  content: content for the third issue
 | 
			
		||||
  milestone_id: 3
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: true
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684820
 | 
			
		||||
  updated_unix: 978307180
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 4
 | 
			
		||||
  repo_id: 2
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue4
 | 
			
		||||
  content: content for the fourth issue
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: true
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684830
 | 
			
		||||
  updated_unix: 978307200
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 5
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  index: 4
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue5
 | 
			
		||||
  content: content for the fifth issue
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: true
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684840
 | 
			
		||||
  updated_unix: 978307200
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 6
 | 
			
		||||
  repo_id: 3
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 1
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue6
 | 
			
		||||
  content: content6
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684850
 | 
			
		||||
  updated_unix: 978307200
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 7
 | 
			
		||||
  repo_id: 2
 | 
			
		||||
  index: 2
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue7
 | 
			
		||||
  content: content for the seventh issue
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684830
 | 
			
		||||
  updated_unix: 978307200
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 8
 | 
			
		||||
  repo_id: 10
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 11
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: pr2
 | 
			
		||||
  content: a pull request
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: true
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684820
 | 
			
		||||
  updated_unix: 978307180
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 9
 | 
			
		||||
  repo_id: 48
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 11
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: pr1
 | 
			
		||||
  content: a pull request
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: true
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 946684820
 | 
			
		||||
  updated_unix: 978307180
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 10
 | 
			
		||||
  repo_id: 42
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 500
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue from deleted account
 | 
			
		||||
  content: content from deleted account
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  deadline_unix: 1019307200
 | 
			
		||||
  created_unix: 946684830
 | 
			
		||||
  updated_unix: 999307200
 | 
			
		||||
  deadline_unix: 1019307200
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 11
 | 
			
		||||
  repo_id: 1
 | 
			
		||||
  index: 5
 | 
			
		||||
  poster_id: 1
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: pull5
 | 
			
		||||
  content: content for the a pull request
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: true
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 1579194806
 | 
			
		||||
  updated_unix: 1579194806
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 12
 | 
			
		||||
  repo_id: 3
 | 
			
		||||
  index: 2
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: pull6
 | 
			
		||||
  content: content for the a pull request
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: true
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 1602935696
 | 
			
		||||
  updated_unix: 1602935696
 | 
			
		||||
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 13
 | 
			
		||||
  repo_id: 50
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue in active repo
 | 
			
		||||
  content: we'll be testing github issue 13171 with this.
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 1602935696
 | 
			
		||||
  updated_unix: 1602935696
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 14
 | 
			
		||||
  repo_id: 51
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue in archived repo
 | 
			
		||||
  content: we'll be testing github issue 13171 with this.
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 1602935696
 | 
			
		||||
  updated_unix: 1602935696
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 15
 | 
			
		||||
  repo_id: 5
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: issue in repo not linked to team1
 | 
			
		||||
  content: content
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 1602935696
 | 
			
		||||
  updated_unix: 1602935696
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 16
 | 
			
		||||
  repo_id: 32
 | 
			
		||||
  index: 1
 | 
			
		||||
  poster_id: 2
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: just a normal issue
 | 
			
		||||
  content: content
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 1602935696
 | 
			
		||||
  updated_unix: 1602935696
 | 
			
		||||
  is_locked: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 17
 | 
			
		||||
  repo_id: 32
 | 
			
		||||
  index: 2
 | 
			
		||||
  poster_id: 15
 | 
			
		||||
  original_author_id: 0
 | 
			
		||||
  name: a issue with a assignment
 | 
			
		||||
  content: content
 | 
			
		||||
  milestone_id: 0
 | 
			
		||||
  priority: 0
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  is_pull: false
 | 
			
		||||
  num_comments: 0
 | 
			
		||||
  created_unix: 1602935696
 | 
			
		||||
  updated_unix: 1602935696
 | 
			
		||||
  is_locked: false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,10 +15,11 @@
 | 
			
		|||
  color: '#000000'
 | 
			
		||||
  num_issues: 1
 | 
			
		||||
  num_closed_issues: 1
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 3
 | 
			
		||||
  repo_id: 0
 | 
			
		||||
  org_id:  3
 | 
			
		||||
  org_id: 3
 | 
			
		||||
  name: orglabel3
 | 
			
		||||
  color: '#abcdef'
 | 
			
		||||
  num_issues: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +33,7 @@
 | 
			
		|||
  color: '#000000'
 | 
			
		||||
  num_issues: 1
 | 
			
		||||
  num_closed_issues: 0
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
  id: 5
 | 
			
		||||
  repo_id: 10
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
  is_closed: false
 | 
			
		||||
  num_issues: 1
 | 
			
		||||
  num_closed_issues: 0
 | 
			
		||||
  completeness: 0
 | 
			
		||||
  deadline_unix: 253370764800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +17,7 @@
 | 
			
		|||
  is_closed: false
 | 
			
		||||
  num_issues: 0
 | 
			
		||||
  num_closed_issues: 0
 | 
			
		||||
  completeness: 0
 | 
			
		||||
  deadline_unix: 253370764800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -26,6 +28,7 @@
 | 
			
		|||
  is_closed: true
 | 
			
		||||
  num_issues: 1
 | 
			
		||||
  num_closed_issues: 0
 | 
			
		||||
  completeness: 0
 | 
			
		||||
  deadline_unix: 253370764800
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -36,14 +39,16 @@
 | 
			
		|||
  is_closed: false
 | 
			
		||||
  num_issues: 0
 | 
			
		||||
  num_closed_issues: 0
 | 
			
		||||
  completeness: 0
 | 
			
		||||
  deadline_unix: 253370764800
 | 
			
		||||
 | 
			
		||||
- 
 | 
			
		||||
-
 | 
			
		||||
  id: 5
 | 
			
		||||
  repo_id: 10
 | 
			
		||||
  name: milestone of repo 10 
 | 
			
		||||
  name: milestone of repo 10
 | 
			
		||||
  content: for testing with PRs
 | 
			
		||||
  is_closed: false
 | 
			
		||||
  num_issues: 0
 | 
			
		||||
  num_closed_issues: 0
 | 
			
		||||
  completeness: 0
 | 
			
		||||
  deadline_unix: 253370764800
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
  authorize: 4 # owner
 | 
			
		||||
  num_repos: 3
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: true
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +17,7 @@
 | 
			
		|||
  authorize: 2 # write
 | 
			
		||||
  num_repos: 1
 | 
			
		||||
  num_members: 2
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -26,6 +28,7 @@
 | 
			
		|||
  authorize: 4 # owner
 | 
			
		||||
  num_repos: 0
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: true
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +39,7 @@
 | 
			
		|||
  authorize: 4 # owner
 | 
			
		||||
  num_repos: 0
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: true
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +50,7 @@
 | 
			
		|||
  authorize: 4 # owner
 | 
			
		||||
  num_repos: 2
 | 
			
		||||
  num_members: 2
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: true
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +61,7 @@
 | 
			
		|||
  authorize: 4 # owner
 | 
			
		||||
  num_repos: 2
 | 
			
		||||
  num_members: 2
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: true
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +72,7 @@
 | 
			
		|||
  authorize: 2 # write
 | 
			
		||||
  num_repos: 1
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +83,7 @@
 | 
			
		|||
  authorize: 2 # write
 | 
			
		||||
  num_repos: 1
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +94,7 @@
 | 
			
		|||
  authorize: 1 # read
 | 
			
		||||
  num_repos: 1
 | 
			
		||||
  num_members: 2
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -93,9 +102,10 @@
 | 
			
		|||
  org_id: 25
 | 
			
		||||
  lower_name: notowners
 | 
			
		||||
  name: NotOwners
 | 
			
		||||
  authorize: 1 # owner
 | 
			
		||||
  authorize: 1 # read
 | 
			
		||||
  num_repos: 0
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +116,7 @@
 | 
			
		|||
  authorize: 1 # read
 | 
			
		||||
  num_repos: 0
 | 
			
		||||
  num_members: 0
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: false
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -116,6 +127,7 @@
 | 
			
		|||
  authorize: 3 # admin
 | 
			
		||||
  num_repos: 0
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: true
 | 
			
		||||
 | 
			
		||||
-
 | 
			
		||||
| 
						 | 
				
			
			@ -126,4 +138,5 @@
 | 
			
		|||
  authorize: 3 # admin
 | 
			
		||||
  num_repos: 0
 | 
			
		||||
  num_members: 1
 | 
			
		||||
  includes_all_repositories: false
 | 
			
		||||
  can_create_org_repo: false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,18 +8,22 @@
 | 
			
		|||
  name: database
 | 
			
		||||
  repo_count: 1
 | 
			
		||||
 | 
			
		||||
- id: 3
 | 
			
		||||
-
 | 
			
		||||
  id: 3
 | 
			
		||||
  name: SQL
 | 
			
		||||
  repo_count: 1
 | 
			
		||||
 | 
			
		||||
- id: 4
 | 
			
		||||
-
 | 
			
		||||
  id: 4
 | 
			
		||||
  name: graphql
 | 
			
		||||
  repo_count: 1
 | 
			
		||||
 | 
			
		||||
- id: 5
 | 
			
		||||
-
 | 
			
		||||
  id: 5
 | 
			
		||||
  name: topicname1
 | 
			
		||||
  repo_count: 1
 | 
			
		||||
 | 
			
		||||
- id: 6
 | 
			
		||||
-
 | 
			
		||||
  id: 6
 | 
			
		||||
  name: topicname2
 | 
			
		||||
  repo_count: 2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
- id: 1
 | 
			
		||||
  name: "WebAuthn credential"
 | 
			
		||||
-
 | 
			
		||||
  id: 1
 | 
			
		||||
  name: WebAuthn credential
 | 
			
		||||
  user_id: 32
 | 
			
		||||
  attestation_type: none
 | 
			
		||||
  sign_count: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,7 +102,7 @@ func TestSearchUsers(t *testing.T) {
 | 
			
		|||
		[]int64{9})
 | 
			
		||||
 | 
			
		||||
	testUserSuccess(&user_model.SearchUserOptions{OrderBy: "id ASC", ListOptions: db.ListOptions{Page: 1}, IsActive: util.OptionalBoolTrue},
 | 
			
		||||
		[]int64{1, 2, 4, 5, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 24, 28, 29, 30, 32})
 | 
			
		||||
		[]int64{1, 2, 4, 5, 8, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 24, 27, 28, 29, 30, 32})
 | 
			
		||||
 | 
			
		||||
	testUserSuccess(&user_model.SearchUserOptions{Keyword: "user1", OrderBy: "id ASC", ListOptions: db.ListOptions{Page: 1}, IsActive: util.OptionalBoolTrue},
 | 
			
		||||
		[]int64{1, 10, 11, 12, 13, 14, 15, 16, 18})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,7 +76,7 @@ func TestPulls(t *testing.T) {
 | 
			
		|||
	Pulls(ctx)
 | 
			
		||||
	assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
 | 
			
		||||
 | 
			
		||||
	assert.Len(t, ctx.Data["Issues"], 3)
 | 
			
		||||
	assert.Len(t, ctx.Data["Issues"], 4)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestMilestones(t *testing.T) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -167,6 +167,33 @@ func TestAPICreateUserInvalidEmail(t *testing.T) {
 | 
			
		|||
	session.MakeRequest(t, req, http.StatusUnprocessableEntity)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestAPICreateAndDeleteUser(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
	adminUsername := "user1"
 | 
			
		||||
	session := loginUser(t, adminUsername)
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session)
 | 
			
		||||
 | 
			
		||||
	req := NewRequestWithValues(
 | 
			
		||||
		t,
 | 
			
		||||
		"POST",
 | 
			
		||||
		fmt.Sprintf("/api/v1/admin/users?token=%s", token),
 | 
			
		||||
		map[string]string{
 | 
			
		||||
			"email":                "deleteme@domain.com",
 | 
			
		||||
			"full_name":            "delete me",
 | 
			
		||||
			"login_name":           "deleteme",
 | 
			
		||||
			"must_change_password": "true",
 | 
			
		||||
			"password":             "password",
 | 
			
		||||
			"send_notify":          "true",
 | 
			
		||||
			"source_id":            "0",
 | 
			
		||||
			"username":             "deleteme",
 | 
			
		||||
		},
 | 
			
		||||
	)
 | 
			
		||||
	MakeRequest(t, req, http.StatusCreated)
 | 
			
		||||
 | 
			
		||||
	req = NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/admin/users/deleteme?token=%s", token))
 | 
			
		||||
	MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestAPIEditUser(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
	adminUsername := "user1"
 | 
			
		||||
| 
						 | 
				
			
			@ -209,3 +236,20 @@ func TestAPIEditUser(t *testing.T) {
 | 
			
		|||
	user2 = unittest.AssertExistsAndLoadBean(t, &user_model.User{LoginName: "user2"})
 | 
			
		||||
	assert.True(t, user2.IsRestricted)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestAPICreateRepoForUser(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
	adminUsername := "user1"
 | 
			
		||||
	session := loginUser(t, adminUsername)
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session)
 | 
			
		||||
 | 
			
		||||
	req := NewRequestWithJSON(
 | 
			
		||||
		t,
 | 
			
		||||
		"POST",
 | 
			
		||||
		fmt.Sprintf("/api/v1/admin/users/%s/repos?token=%s", adminUsername, token),
 | 
			
		||||
		&api.CreateRepoOption{
 | 
			
		||||
			Name: "admincreatedrepo",
 | 
			
		||||
		},
 | 
			
		||||
	)
 | 
			
		||||
	MakeRequest(t, req, http.StatusCreated)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										38
									
								
								tests/integration/api_feed_user_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								tests/integration/api_feed_user_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
// Copyright 2022 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package integration
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/tests"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestFeed(t *testing.T) {
 | 
			
		||||
	t.Run("User", func(t *testing.T) {
 | 
			
		||||
		t.Run("Atom", func(t *testing.T) {
 | 
			
		||||
			defer tests.PrepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
			req := NewRequest(t, "GET", "/user2.atom")
 | 
			
		||||
			resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
			data := resp.Body.String()
 | 
			
		||||
			assert.Contains(t, data, `<feed xmlns="http://www.w3.org/2005/Atom"`)
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		t.Run("RSS", func(t *testing.T) {
 | 
			
		||||
			defer tests.PrepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
			req := NewRequest(t, "GET", "/user2.rss")
 | 
			
		||||
			resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
			data := resp.Body.String()
 | 
			
		||||
			assert.Contains(t, data, `<rss version="2.0"`)
 | 
			
		||||
		})
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										111
									
								
								tests/integration/api_user_follow_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								tests/integration/api_user_follow_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,111 @@
 | 
			
		|||
// Copyright 2022 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package integration
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/tests"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestAPIFollow(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	user1 := "user4"
 | 
			
		||||
	user2 := "user1"
 | 
			
		||||
 | 
			
		||||
	session1 := loginUser(t, user1)
 | 
			
		||||
	token1 := getTokenForLoggedInUser(t, session1)
 | 
			
		||||
 | 
			
		||||
	session2 := loginUser(t, user2)
 | 
			
		||||
	token2 := getTokenForLoggedInUser(t, session2)
 | 
			
		||||
 | 
			
		||||
	t.Run("Follow", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "PUT", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user1, token2))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("ListFollowing", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/following?token=%s", user2, token2))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		var users []api.User
 | 
			
		||||
		DecodeJSON(t, resp, &users)
 | 
			
		||||
		assert.Len(t, users, 1)
 | 
			
		||||
		assert.Equal(t, user1, users[0].UserName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("ListMyFollowing", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/following?token=%s", token2))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		var users []api.User
 | 
			
		||||
		DecodeJSON(t, resp, &users)
 | 
			
		||||
		assert.Len(t, users, 1)
 | 
			
		||||
		assert.Equal(t, user1, users[0].UserName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("ListFollowers", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/followers?token=%s", user1, token1))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		var users []api.User
 | 
			
		||||
		DecodeJSON(t, resp, &users)
 | 
			
		||||
		assert.Len(t, users, 1)
 | 
			
		||||
		assert.Equal(t, user2, users[0].UserName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("ListMyFollowers", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/followers?token=%s", token1))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		var users []api.User
 | 
			
		||||
		DecodeJSON(t, resp, &users)
 | 
			
		||||
		assert.Len(t, users, 1)
 | 
			
		||||
		assert.Equal(t, user2, users[0].UserName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("CheckFollowing", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/following/%s?token=%s", user2, user1, token2))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
 | 
			
		||||
		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/following/%s?token=%s", user1, user2, token2))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNotFound)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("CheckMyFollowing", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user1, token2))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
 | 
			
		||||
		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user2, token1))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNotFound)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("Unfollow", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/user/following/%s?token=%s", user1, token2))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										51
									
								
								tests/integration/api_user_info_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								tests/integration/api_user_info_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
// Copyright 2022 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package integration
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/tests"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestAPIUserInfo(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	user := "user1"
 | 
			
		||||
	user2 := "user31"
 | 
			
		||||
 | 
			
		||||
	session := loginUser(t, user)
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session)
 | 
			
		||||
 | 
			
		||||
	t.Run("GetInfo", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s?token=%s", user2, token))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		var u api.User
 | 
			
		||||
		DecodeJSON(t, resp, &u)
 | 
			
		||||
		assert.Equal(t, user2, u.UserName)
 | 
			
		||||
 | 
			
		||||
		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s", user2))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNotFound)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("GetAuthenticatedUser", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user?token=%s", token))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		var u api.User
 | 
			
		||||
		DecodeJSON(t, resp, &u)
 | 
			
		||||
		assert.Equal(t, user, u.UserName)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										78
									
								
								tests/integration/api_user_star_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								tests/integration/api_user_star_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
// Copyright 2022 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package integration
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/tests"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestAPIStar(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	user := "user1"
 | 
			
		||||
	repo := "user2/repo1"
 | 
			
		||||
 | 
			
		||||
	session := loginUser(t, user)
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session)
 | 
			
		||||
 | 
			
		||||
	t.Run("Star", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "PUT", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo, token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("GetStarredRepos", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/starred?token=%s", user, token))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		assert.Equal(t, "1", resp.Header().Get("X-Total-Count"))
 | 
			
		||||
 | 
			
		||||
		var repos []api.Repository
 | 
			
		||||
		DecodeJSON(t, resp, &repos)
 | 
			
		||||
		assert.Len(t, repos, 1)
 | 
			
		||||
		assert.Equal(t, repo, repos[0].FullName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("GetMyStarredRepos", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred?token=%s", token))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		assert.Equal(t, "1", resp.Header().Get("X-Total-Count"))
 | 
			
		||||
 | 
			
		||||
		var repos []api.Repository
 | 
			
		||||
		DecodeJSON(t, resp, &repos)
 | 
			
		||||
		assert.Len(t, repos, 1)
 | 
			
		||||
		assert.Equal(t, repo, repos[0].FullName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("IsStarring", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo, token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
 | 
			
		||||
		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo+"notexisting", token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNotFound)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("Unstar", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/user/starred/%s?token=%s", repo, token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										78
									
								
								tests/integration/api_user_watch_test.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								tests/integration/api_user_watch_test.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
// Copyright 2022 The Gitea Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a MIT-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package integration
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/tests"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestAPIWatch(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	user := "user1"
 | 
			
		||||
	repo := "user2/repo1"
 | 
			
		||||
 | 
			
		||||
	session := loginUser(t, user)
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session)
 | 
			
		||||
 | 
			
		||||
	t.Run("Watch", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo, token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("GetWatchedRepos", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/users/%s/subscriptions?token=%s", user, token))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		assert.Equal(t, "1", resp.Header().Get("X-Total-Count"))
 | 
			
		||||
 | 
			
		||||
		var repos []api.Repository
 | 
			
		||||
		DecodeJSON(t, resp, &repos)
 | 
			
		||||
		assert.Len(t, repos, 1)
 | 
			
		||||
		assert.Equal(t, repo, repos[0].FullName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("GetMyWatchedRepos", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/user/subscriptions?token=%s", token))
 | 
			
		||||
		resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		assert.Equal(t, "1", resp.Header().Get("X-Total-Count"))
 | 
			
		||||
 | 
			
		||||
		var repos []api.Repository
 | 
			
		||||
		DecodeJSON(t, resp, &repos)
 | 
			
		||||
		assert.Len(t, repos, 1)
 | 
			
		||||
		assert.Equal(t, repo, repos[0].FullName)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("IsWatching", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo, token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
		req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo+"notexisting", token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNotFound)
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	t.Run("Unwatch", func(t *testing.T) {
 | 
			
		||||
		defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
		req := NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/repos/%s/subscription?token=%s", repo, token))
 | 
			
		||||
		MakeRequest(t, req, http.StatusNoContent)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue