11using System ;
22using System . Collections . Generic ;
3- using System . Collections . ObjectModel ;
3+ using System . Net ;
44using System . Threading . Tasks ;
55using NSubstitute ;
6+ using NSubstitute . ExceptionExtensions ;
67using Octokit ;
78using Xunit ;
89
@@ -20,7 +21,7 @@ public async Task CanGetAccess()
2021 {
2122 { "X-OAuth-Scopes" , "repo, delete_repo" }
2223 } ;
23-
24+
2425 var http = Substitute . For < IResponse > ( ) ;
2526 http . Headers . Returns ( headers ) ;
2627
@@ -31,7 +32,7 @@ public async Task CanGetAccess()
3132 client . Connection . Get < string > ( Arg . Any < Uri > ( ) , null , null ) . Returns ( response ) ;
3233 client . Connection . BaseAddress . Returns ( new Uri ( "http://localhost/" ) ) ;
3334 var gitHub = new GitHub ( client , _noop , _noop ) ;
34-
35+
3536 //act
3637 var access = await gitHub . GetAccess ( ) ;
3738
@@ -42,7 +43,7 @@ public async Task CanGetAccess()
4243 }
4344
4445 [ Fact ]
45- public async Task CanGetOrganizationFromClient ( )
46+ public async Task CanGetOrganization ( )
4647 {
4748 //arrange
4849 var client = Substitute . For < IGitHubClient > ( ) ;
@@ -57,7 +58,7 @@ public async Task CanGetOrganizationFromClient()
5758 }
5859
5960 [ Fact ]
60- public async Task CanGetUserFromClient ( )
61+ public async Task CanGetUser ( )
6162 {
6263 //arrange
6364 var client = Substitute . For < IGitHubClient > ( ) ;
@@ -71,6 +72,53 @@ public async Task CanGetUserFromClient()
7172 Assert . Equal ( "SteveDesmond-ca" , account . Login ) ;
7273 }
7374
75+ [ Fact ]
76+ public async Task CanGetCurrentUser ( )
77+ {
78+ //arrange
79+ var client = Substitute . For < IGitHubClient > ( ) ;
80+ client . User . Current ( ) . Returns ( new Stubs . User ( "SteveDesmond-ca" ) ) ;
81+ var gitHub = new GitHub ( client , _noop , _noop ) ;
82+
83+ //act
84+ var account = await gitHub . GetCurrentUser ( ) ;
85+
86+ //assert
87+ Assert . Equal ( "SteveDesmond-ca" , account . Login ) ;
88+ }
89+
90+ [ Fact ]
91+ public async Task CanGetRoleForUser ( )
92+ {
93+ //arrange
94+ var client = Substitute . For < IGitHubClient > ( ) ;
95+ var membership = new OrganizationMembership ( null , new StringEnum < MembershipState > ( MembershipState . Active ) , new StringEnum < MembershipRole > ( MembershipRole . Admin ) , null , null , null ) ;
96+ client . Organization . Member . GetOrganizationMembership ( "ecoAPM" , "SteveDesmond-ca" ) . Returns ( membership ) ;
97+ var gitHub = new GitHub ( client , _noop , _noop ) ;
98+
99+ //act
100+ var role = await gitHub . GetRole ( "SteveDesmond-ca" , "ecoAPM" ) ;
101+
102+ //assert
103+ Assert . Equal ( MembershipRole . Admin , role ) ;
104+ }
105+
106+ [ Fact ]
107+ public async Task NonExistentOrgMemberReturnsNull ( )
108+ {
109+ //arrange
110+ var client = Substitute . For < IGitHubClient > ( ) ;
111+ var membership = new OrganizationMembership ( null , new StringEnum < MembershipState > ( MembershipState . Active ) , new StringEnum < MembershipRole > ( MembershipRole . Admin ) , null , null , null ) ;
112+ client . Organization . Member . GetOrganizationMembership ( "ecoAPM" , "SteveDesmond-ca" ) . Throws ( new NotFoundException ( ":(" , HttpStatusCode . NotFound ) ) ;
113+ var gitHub = new GitHub ( client , _noop , _noop ) ;
114+
115+ //act
116+ var role = await gitHub . GetRole ( "SteveDesmond-ca" , "ecoAPM" ) ;
117+
118+ //assert
119+ Assert . Null ( role ) ;
120+ }
121+
74122 [ Fact ]
75123 public async Task CanGetRepositoriesForOrganization ( )
76124 {
0 commit comments