11using System ;
22using System . Net . Http . Headers ;
3+ using System . Text . RegularExpressions ;
4+ using System . Threading . Tasks ;
35using Flurl . Http ;
6+ using OpenStack ;
47using Rackspace . Testing ;
58using Xunit ;
69
710namespace Rackspace
811{
912 public class RackspaceNetTests : IDisposable
1013 {
14+ public RackspaceNetTests ( )
15+ {
16+ RackspaceNet . ResetDefaults ( ) ;
17+ }
18+
1119 public void Dispose ( )
1220 {
13- RackspaceNet . Configuration . ResetDefaults ( ) ;
21+ RackspaceNet . ResetDefaults ( ) ;
22+ }
23+
24+ [ Fact ]
25+ public async Task UseBothOpenStackAndRackspace_OpenStackConfiguredFirst ( )
26+ {
27+ using ( var httpTest = new HttpTest ( ) )
28+ {
29+ OpenStackNet . Configure ( ) ;
30+ RackspaceNet . Configure ( ) ;
31+
32+ await "http://api.com" . GetAsync ( ) ;
33+
34+ var userAgent = httpTest . CallLog [ 0 ] . Request . Headers . UserAgent . ToString ( ) ;
35+
36+ var rackspaceMatches = new Regex ( "rackspace" ) . Matches ( userAgent ) ;
37+ Assert . Equal ( 1 , rackspaceMatches . Count ) ;
38+
39+ var openstackMatches = new Regex ( "openstack" ) . Matches ( userAgent ) ;
40+ Assert . Equal ( 1 , openstackMatches . Count ) ;
41+ }
42+ }
43+
44+ [ Fact ]
45+ public async Task UseBothOpenStackAndRackspace_RackspaceConfiguredFirst ( )
46+ {
47+ using ( var httpTest = new HttpTest ( ) )
48+ {
49+ RackspaceNet . Configure ( ) ;
50+ OpenStackNet . Configure ( ) ;
51+
52+ await "http://api.com" . GetAsync ( ) ;
53+
54+ var userAgent = httpTest . CallLog [ 0 ] . Request . Headers . UserAgent . ToString ( ) ;
55+
56+ var rackspaceMatches = new Regex ( "rackspace" ) . Matches ( userAgent ) ;
57+ Assert . Equal ( 1 , rackspaceMatches . Count ) ;
58+
59+ var openstackMatches = new Regex ( "openstack" ) . Matches ( userAgent ) ;
60+ Assert . Equal ( 1 , openstackMatches . Count ) ;
61+ }
62+ }
63+
64+ [ Fact ]
65+ public void ResetDefaults_ResetsFlurlConfiguration ( )
66+ {
67+ RackspaceNet . Configure ( ) ;
68+ Assert . NotNull ( FlurlHttp . Configuration . BeforeCall ) ;
69+ RackspaceNet . ResetDefaults ( ) ;
70+ Assert . Null ( FlurlHttp . Configuration . BeforeCall ) ;
1471 }
1572
1673 [ Fact ]
17- public async void UserAgentTest ( )
74+ public async Task UserAgentTest ( )
1875 {
1976 using ( var httpTest = new HttpTest ( ) )
2077 {
@@ -29,7 +86,27 @@ public async void UserAgentTest()
2986 }
3087
3188 [ Fact ]
32- public async void UserAgentWithApplicationSuffixTest ( )
89+ public async Task UserAgentOnlyListedOnceTest ( )
90+ {
91+ using ( var httpTest = new HttpTest ( ) )
92+ {
93+ RackspaceNet . Configure ( ) ;
94+ RackspaceNet . Configure ( ) ;
95+
96+ await "http://api.com" . GetAsync ( ) ;
97+
98+ var userAgent = httpTest . CallLog [ 0 ] . Request . Headers . UserAgent . ToString ( ) ;
99+
100+ var rackspaceMatches = new Regex ( "rackspace" ) . Matches ( userAgent ) ;
101+ Assert . Equal ( 1 , rackspaceMatches . Count ) ;
102+
103+ var openstackMatches = new Regex ( "openstack" ) . Matches ( userAgent ) ;
104+ Assert . Equal ( 1 , openstackMatches . Count ) ;
105+ }
106+ }
107+
108+ [ Fact ]
109+ public async Task UserAgentWithApplicationSuffixTest ( )
33110 {
34111 using ( var httpTest = new HttpTest ( ) )
35112 {
0 commit comments