예제 #1
0
        // For more information on configuring authentication, please visit https://go.microsoft.com/fwlink/?LinkId=301864
        public void ConfigureAuth(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType("ExternalCookie");
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = "ExternalCookie",
                AuthenticationMode = AuthenticationMode.Active,
                CookieName         = ".AspNet.ExternalCookie",
                LoginPath          = new PathString("/Account/AuthorizeSSO"),
                ExpireTimeSpan     = TimeSpan.FromMinutes(5)
            });

            var serviceInfos = CloudFoundryServiceInfoCreator.Instance(ApplicationConfig.Configuration);
            var ssoInfo      = serviceInfos.GetServiceInfos <SsoServiceInfo>().FirstOrDefault()
                               ?? throw new NullReferenceException("Service info for an SSO Provider was not found!");

            app.UseOpenIDConnect(new OpenIDConnectOptions()
            {
                ClientID             = ssoInfo.ClientId,
                ClientSecret         = ssoInfo.ClientSecret,
                AuthDomain           = ssoInfo.AuthDomain,
                AppHost              = ssoInfo.ApplicationInfo.ApplicationUris.First(),
                AppPort              = 0,
                AdditionalScopes     = "testgroup",
                ValidateCertificates = false,
                CallbackPath         = new PathString("/signin-cloudfoundry")
            });

            AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
        }
        public void Constructor_ReturnsInstance()
        {
            IConfiguration config = new ConfigurationBuilder().Build();

            var inst = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(inst);
        }
        public void Constructor_ThrowsIfConfigNull()
        {
            IConfiguration config = null;

            var ex = Assert.Throws <ArgumentNullException>(() => CloudFoundryServiceInfoCreator.Instance(config));

            Assert.Contains(nameof(config), ex.Message);
        }
예제 #4
0
        protected void Application_Start(object sender, EventArgs e)
        {
            ApplicationConfig.RegisterConfig("development");
            var serviceInfos = CloudFoundryServiceInfoCreator.Instance(ApplicationConfig.Configuration);
            var ssoInfo      = serviceInfos.GetServiceInfo <SsoServiceInfo>("mySSOService");

            var serviceHost = new ServiceHost(typeof(ValueService), new Uri("http://" + ssoInfo.ApplicationInfo.ApplicationUris.First()));

            serviceHost.Authorization.ServiceAuthorizationManager = new JwtAuthorizationManager(new CloudFoundryOptions(ApplicationConfig.Configuration));
        }
        public void BuildServiceInfoFactories_BuildsExpected()
        {
            IConfiguration config = new ConfigurationBuilder().Build();

            var inst = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(inst);
            Assert.NotNull(inst.Factories);
            Assert.Equal(12, inst.Factories.Count);
        }
예제 #6
0
 private static ServiceInfoCreator GetServiceInfoCreator(IConfiguration config)
 {
     if (Platform.IsCloudFoundry)
     {
         return(CloudFoundryServiceInfoCreator.Instance(config));
     }
     else
     {
         return(ServiceInfoCreator.Instance(config));
     }
 }
예제 #7
0
        public void Constructor_ReturnsSameInstance()
        {
            // Arrange
            IConfiguration config = new ConfigurationBuilder().Build();

            // Act and Assert
            var inst = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(inst);
            var inst2 = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.Same(inst, inst2);
        }
예제 #8
0
        protected void Application_Start(object sender, EventArgs e)
        {
            ApplicationConfig.RegisterConfig("development");
            var startLogger  = ApplicationConfig.LoggerFactory.CreateLogger("Startup");
            var serviceInfos = CloudFoundryServiceInfoCreator.Instance(ApplicationConfig.Configuration);
            var ssoInfo      = serviceInfos.GetServiceInfos <SsoServiceInfo>().FirstOrDefault()
                               ?? throw new NullReferenceException("Couldn't find SSO Service Info");

            startLogger.LogInformation("Listening at http://{uri}", ssoInfo.ApplicationInfo.ApplicationUris.First());
            var serviceHost = new ServiceHost(typeof(ValueService), new Uri("http://" + ssoInfo.ApplicationInfo.ApplicationUris.First()));

            serviceHost.AddJwtAuthorization(ApplicationConfig.Configuration, null, ApplicationConfig.LoggerFactory);
        }
예제 #9
0
        public void BuildServiceInfos_NoCloudFoundryServices_BuildsExpected()
        {
            Environment.SetEnvironmentVariable("VCAP_APPLICATION", null);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", null);

            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config = builder.Build();

            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(creator.ServiceInfos);
            Assert.Equal(0, creator.ServiceInfos.Count);
        }
예제 #10
0
        public void GetServiceInfo_NoVCAPs_ReturnsExpected()
        {
            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);
            var result  = creator.GetServiceInfos <RedisServiceInfo>();

            Assert.NotNull(result);
            Assert.Empty(result);

            var result2 = creator.GetServiceInfos(typeof(MySqlServiceInfo));

            Assert.NotNull(result2);
            Assert.Empty(result2);

            var result3 = creator.GetServiceInfos <RedisServiceInfo>();

            Assert.NotNull(result3);
            Assert.Empty(result3);

            var result4 = creator.GetServiceInfos(typeof(RedisServiceInfo));

            Assert.NotNull(result4);
            Assert.Empty(result4);

            var result5 = creator.GetServiceInfo <MySqlServiceInfo>("foobar-db2");

            Assert.Null(result5);

            var result6 = creator.GetServiceInfo <MySqlServiceInfo>("spring-cloud-broker-db2");

            Assert.Null(result6);

            var result7 = creator.GetServiceInfo("spring-cloud-broker-db2");

            Assert.Null(result7);

            var result8 = creator.GetServiceInfo <RedisServiceInfo>("spring-cloud-broker-db2");

            Assert.Null(result8);
        }
        public void GetServiceInfosType_WithVCAPs_ReturnsExpected()
        {
            // Arrange
            var environment2 = @"
{
      'p-mysql': [
        {
            'credentials': {
            'hostname': '192.168.0.90',
            'port': 3306,
            'name': 'cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355',
            'username': '******',
            'password': '******',
            'uri': 'mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true',
            'jdbcUrl': 'jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt'
                },
          'syslog_drain_url': null,
          'label': 'p-mysql',
          'provider': null,
          'plan': '100mb-dev',
          'name': 'spring-cloud-broker-db',
          'tags': [
            'mysql',
            'relational'
          ]
        },
        {
            'credentials': {
            'hostname': '192.168.0.90',
            'port': 3306,
            'name': 'cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355',
            'username': '******',
            'password': '******',
            'uri': 'mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true',
            'jdbcUrl': 'jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt'
                },
          'syslog_drain_url': null,
          'label': 'p-mysql',
          'provider': null,
          'plan': '100mb-dev',
          'name': 'spring-cloud-broker-db2',
          'tags': [
            'mysql',
            'relational'
          ]
        }
      ]
  }";

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", environment2);

            ConfigurationBuilder builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            var result = creator.GetServiceInfos <MySqlServiceInfo>();

            Assert.NotNull(result);
            Assert.Equal(2, result.Count);
            Assert.True(result[0] is MySqlServiceInfo);
            Assert.True(result[1] is MySqlServiceInfo);

            var result2 = creator.GetServiceInfos(typeof(MySqlServiceInfo));

            Assert.NotNull(result2);
            Assert.Equal(2, result2.Count);
            Assert.True(result2[0] is MySqlServiceInfo);
            Assert.True(result2[1] is MySqlServiceInfo);

            var result3 = creator.GetServiceInfos <RedisServiceInfo>();

            Assert.NotNull(result3);
            Assert.Empty(result3);

            var result4 = creator.GetServiceInfos(typeof(RedisServiceInfo));

            Assert.NotNull(result4);
            Assert.Empty(result4);

            var result5 = creator.GetServiceInfo <MySqlServiceInfo>("foobar-db2");

            Assert.Null(result5);

            var result6 = creator.GetServiceInfo <MySqlServiceInfo>("spring-cloud-broker-db2");

            Assert.NotNull(result6);
            Assert.True(result6 is MySqlServiceInfo);

            var result7 = creator.GetServiceInfo("spring-cloud-broker-db2");

            Assert.NotNull(result7);
            Assert.True(result7 is MySqlServiceInfo);

            var result8 = creator.GetServiceInfo <RedisServiceInfo>("spring-cloud-broker-db2");

            Assert.Null(result8);
        }
예제 #12
0
        public void BuildServiceInfos_WithCloudFoundryServices_WithInvalidURIInMonogoBinding_BuildsExpected()
        {
            // Arrange
            var environment2 = @"
                {
                    ""p-redis"": [{
                        ""credentials"": {
                            ""host"": ""10.66.32.54"",
                            ""password"": ""4254bd8b-7f83-4a8d-8f38-8206a9d7a9f7"",
                            ""port"": 43887
                        },
                        ""syslog_drain_url"": null,
                        ""volume_mounts"": [],
                        ""label"": ""p-redis"",
                        ""provider"": null,
                        ""plan"": ""shared-vm"",
                        ""name"": ""autosource_redis_cache"",
                        ""tags"": [
                            ""pivotal"",
                            ""redis""
                        ]
                    }],
                    ""mongodb-odb"": [{
                        ""credentials"": {
                            ""database"": ""foo"",
                            ""password"": ""bar"",
                            ""servers"": [
                                ""10.66.105.19:28000"",
                                ""10.66.105.39:28000"",
                                ""10.66.105.20:28000""
                            ],
                            ""uri"": ""mongodb://*****:*****@10.66.105.19:28000,10.66.105.39:28000,10.66.105.20:28000/foo?authSource=admin"",
                            ""username"": ""foo""
                        },
                        ""syslog_drain_url"": null,
                        ""volume_mounts"": [],
                        ""label"": ""mongodb-odb"",
                        ""provider"": null,
                        ""plan"": ""replica_set"",
                        ""name"": ""autosource_jobs_vehicle"",
                        ""tags"": [""mongodb""]
                    },
                    {
                        ""credentials"": {
                            ""database"": ""foo1"",
                            ""password"": ""bar1"",
                            ""servers"": [
                                ""10.66.105.42:28000"",
                                ""10.66.105.45:28000"",
                                ""10.66.105.41:28000""
                            ],
                            ""uri"": ""mongodb://*****:*****@10.66.105.42:28000,10.66.105.45:28000,10.66.105.41:28000/foo1?authSource=admin"",
                            ""username"": ""bar1""
                        },
                        ""syslog_drain_url"": null,
                        ""volume_mounts"": [],
                        ""label"": ""mongodb-odb"",
                        ""provider"": null,
                        ""plan"": ""replica_set"",
                        ""name"": ""autosource_vehicle_service_mongodb"",
                        ""tags"": [""mongodb""]
                    }],
                    ""p-service-registry"": [{
                        ""credentials"": {
                            ""uri"": ""https://eureka-a015d976-af2e-430c-81f6-4f99272ccd24.apps.preprdpcf01.foo.com"",
                            ""client_secret"": ""foo"",
                            ""client_id"": ""p-service-registry-bd61a360-f39a-45f8-b022-bbb"",
                            ""access_token_uri"": ""https://p-spring-cloud-services.uaa.sys.preprdpcf01.foo.com/oauth/token""
                        },
                        ""syslog_drain_url"": null,
                        ""volume_mounts"": [],
                        ""label"": ""p-service-registry"",
                        ""provider"": null,
                        ""plan"": ""standard"",
                        ""name"": ""autosource_service_registry"",
                        ""tags"": [
                            ""eureka"",
                            ""discovery"",
                            ""registry"",
                            ""spring-cloud""
                        ]
                    }],
                    ""p-config-server"": [{
                        ""credentials"": {
                            ""uri"": ""https://config-86e87517-cf1f-4112-af74-c9c7c957e7df.apps.preprdpcf01.foo.com"",
                            ""client_secret"": ""foo"",
                            ""client_id"": ""p-config-server-4c82e877-1c3c-4029-a7cc-4886ae3f444"",
                            ""access_token_uri"": ""https://p-spring-cloud-services.uaa.sys.preprdpcf01.foo.com/oauth/token""
                        },
                        ""syslog_drain_url"": null,
                        ""volume_mounts"": [],
                        ""label"": ""p-config-server"",
                        ""provider"": null,
                        ""plan"": ""standard"",
                        ""name"": ""autosource_config_server"",
                        ""tags"": [
                            ""configuration"",
                            ""spring-cloud""
                        ]
                    }],
                    ""user-provided"": [{
                        ""credentials"": {
                            ""uri"": ""10.66.42.50:9001"",
                            ""accesskey"": ""foo"",
                            ""secretkey"": ""bar""
                        },
                        ""syslog_drain_url"": """",
                        ""volume_mounts"": [],
                        ""label"": ""user-provided"",
                        ""name"": ""foo_minio"",
                        ""tags"": []
                    }]
                }";

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", environment2);

            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(creator.ServiceInfos);
            Assert.Equal(4, creator.ServiceInfos.Count);

            var result1 = creator.GetServiceInfos <RedisServiceInfo>();

            Assert.NotNull(result1);
            Assert.Single(result1);

            var redis1 = result1[0];

            Assert.Equal("10.66.32.54", redis1.Host);

            var resutlt2 = creator.GetServiceInfos <MongoDbServiceInfo>();

            Assert.Equal(2, resutlt2.Count);

            var result3 = creator.GetServiceInfos <EurekaServiceInfo>();

            Assert.Single(result3);
            Assert.Equal("eureka-a015d976-af2e-430c-81f6-4f99272ccd24.apps.preprdpcf01.foo.com", result3[0].Host);
        }
예제 #13
0
        public void GetServiceInfosType_WithVCAPs_ReturnsExpected()
        {
            // Arrange
            var environment2 = @"
                {
                    ""p-mysql"": [{
                        ""credentials"": {
                            ""hostname"": ""192.168.0.90"",
                            ""port"": 3306,
                            ""name"": ""cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355"",
                            ""username"": ""Dd6O1BPXUHdrmzbP"",
                            ""password"": ""7E1LxXnlH2hhlPVt"",
                            ""uri"": ""mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true"",
                            ""jdbcUrl"": ""jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt""
                        },
                        ""syslog_drain_url"": null,
                        ""label"": ""p-mysql"",
                        ""provider"": null,
                        ""plan"": ""100mb-dev"",
                        ""name"": ""spring-cloud-broker-db"",
                        ""tags"": [
                            ""mysql"",
                            ""relational""
                        ]
                    },
                    {
                        ""credentials"": {
                            ""hostname"": ""192.168.0.90"",
                            ""port"": 3306,
                            ""name"": ""cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355"",
                            ""username"": ""Dd6O1BPXUHdrmzbP"",
                            ""password"": ""7E1LxXnlH2hhlPVt"",
                            ""uri"": ""mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true"",
                            ""jdbcUrl"": ""jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt""
                        },
                        ""syslog_drain_url"": null,
                        ""label"": ""p-mysql"",
                        ""provider"": null,
                        ""plan"": ""100mb-dev"",
                        ""name"": ""spring-cloud-broker-db2"",
                        ""tags"": [
                            ""mysql"",
                            ""relational""
                        ]
                    }]
                }";

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", environment2);

            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            var result = creator.GetServiceInfos <MySqlServiceInfo>();

            Assert.NotNull(result);
            Assert.Equal(2, result.Count);
            Assert.True(result[0] is MySqlServiceInfo);
            Assert.True(result[1] is MySqlServiceInfo);

            var result2 = creator.GetServiceInfos(typeof(MySqlServiceInfo));

            Assert.NotNull(result2);
            Assert.Equal(2, result2.Count);
            Assert.True(result2[0] is MySqlServiceInfo);
            Assert.True(result2[1] is MySqlServiceInfo);

            var result3 = creator.GetServiceInfos <RedisServiceInfo>();

            Assert.NotNull(result3);
            Assert.Empty(result3);

            var result4 = creator.GetServiceInfos(typeof(RedisServiceInfo));

            Assert.NotNull(result4);
            Assert.Empty(result4);

            var result5 = creator.GetServiceInfo <MySqlServiceInfo>("foobar-db2");

            Assert.Null(result5);

            var result6 = creator.GetServiceInfo <MySqlServiceInfo>("spring-cloud-broker-db2");

            Assert.NotNull(result6);
            Assert.True(result6 is MySqlServiceInfo);

            var result7 = creator.GetServiceInfo("spring-cloud-broker-db2");

            Assert.NotNull(result7);
            Assert.True(result7 is MySqlServiceInfo);

            var result8 = creator.GetServiceInfo <RedisServiceInfo>("spring-cloud-broker-db2");

            Assert.Null(result8);
        }
예제 #14
0
        public void BuildServiceInfos_WithCloudFoundryServices_BuildsExpected()
        {
            // Arrange
            var environment2 = @"
                {
                    ""p-mysql"": [{
                        ""credentials"": {
                            ""hostname"": ""192.168.0.90"",
                            ""port"": 3306,
                            ""name"": ""cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355"",
                            ""username"": ""Dd6O1BPXUHdrmzbP"",
                            ""password"": ""7E1LxXnlH2hhlPVt"",
                            ""uri"": ""mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true"",
                            ""jdbcUrl"": ""jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt""
                        },
                        ""syslog_drain_url"": null,
                        ""label"": ""p-mysql"",
                        ""provider"": null,
                        ""plan"": ""100mb-dev"",
                        ""name"": ""spring-cloud-broker-db"",
                        ""tags"": [
                            ""mysql"",
                            ""relational""
                        ]
                    }],
                    ""p-rabbitmq"": [{
                        ""credentials"": {
                            ""http_api_uris"": [""https://*****:*****@pivotal-rabbitmq.system.testcloud.com/api/""],
                            ""ssl"": false,
                            ""dashboard_url"": ""https://pivotal-rabbitmq.system.testcloud.com/#/login/03c7a684-6ff1-4bd0-ad45-d10374ffb2af/l5oq2q0unl35s6urfsuib0jvpo"",
                            ""password"": ""l5oq2q0unl35s6urfsuib0jvpo"",
                            ""protocols"": {
                                ""management"": {
                                    ""path"": ""/api/"",
                                    ""ssl"": false,
                                    ""hosts"": [""192.168.0.81""],
                                    ""password"": ""l5oq2q0unl35s6urfsuib0jvpo"",
                                    ""username"": ""03c7a684-6ff1-4bd0-ad45-d10374ffb2af"",
                                    ""port"": 15672,
                                    ""host"": ""192.168.0.81"",
                                    ""uri"": ""https://*****:*****@192.168.0.81:15672/api/"",
                                    ""uris"": [""https://*****:*****@192.168.0.81:15672/api/""]
                                },
                                ""amqp"": {
                                    ""vhost"": ""fb03d693-91fe-4dc5-8203-ff7a6390df66"",
                                    ""username"": ""03c7a684-6ff1-4bd0-ad45-d10374ffb2af"",
                                    ""password"": ""l5oq2q0unl35s6urfsuib0jvpo"",
                                    ""port"": 5672,
                                    ""host"": ""192.168.0.81"",
                                    ""hosts"": [""192.168.0.81""],
                                    ""ssl"": false,
                                    ""uri"": ""amqp://*****:*****@192.168.0.81:5672/fb03d693-91fe-4dc5-8203-ff7a6390df66"",
                                    ""uris"": [""amqp://*****:*****@192.168.0.81:5672/fb03d693-91fe-4dc5-8203-ff7a6390df66""]
                                }
                            },
                            ""username"": ""03c7a684-6ff1-4bd0-ad45-d10374ffb2af"",
                            ""hostname"": ""192.168.0.81"",
                            ""hostnames"": [""192.168.0.81""],
                            ""vhost"": ""fb03d693-91fe-4dc5-8203-ff7a6390df66"",
                            ""http_api_uri"": ""https://*****:*****@pivotal-rabbitmq.system.testcloud.com/api/"",
                            ""uri"": ""amqp://*****:*****@192.168.0.81/fb03d693-91fe-4dc5-8203-ff7a6390df66"",
                            ""uris"": [""amqp://*****:*****@192.168.0.81/fb03d693-91fe-4dc5-8203-ff7a6390df66""]
                        },
                        ""syslog_drain_url"": null,
                        ""label"": ""p-rabbitmq"",
                        ""provider"": null,
                        ""plan"": ""standard"",
                        ""name"": ""spring-cloud-broker-rmq"",
                        ""tags"": [
                            ""rabbitmq"",
                            ""messaging"",
                            ""message-queue"",
                            ""amqp"",
                            ""stomp"",
                            ""mqtt"",
                            ""pivotal""
                        ]
                    }]
                }";

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", environment2);

            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(creator.ServiceInfos);
            Assert.Equal(2, creator.ServiceInfos.Count);
        }
        public void BuildServiceInfos_WithCloudFoundryServices_WithInvalidURIInMonogoBinding_BuildsExpected()
        {
            // Arrange
            var environment2 = @"
 {
      'p-redis': [
        {
          'credentials': {
            'host': '10.66.32.54',
            'password': '******',
            'port': 43887
          },
          'syslog_drain_url': null,
          'volume_mounts': [],
          'label': 'p-redis',
          'provider': null,
          'plan': 'shared-vm',
          'name': 'autosource_redis_cache',
          'tags': [
            'pivotal',
            'redis'
          ]
        }
      ],
      'mongodb-odb': [
        {
          'credentials': {
            'database': 'foo',
            'password': '******',
            'servers': [
              '10.66.105.19:28000',
              '10.66.105.39:28000',
              '10.66.105.20:28000'
            ],
            'uri': 'mongodb://*****:*****@10.66.105.19:28000,10.66.105.39:28000,10.66.105.20:28000/foo?authSource=admin',
            'username': '******'
          },
          'syslog_drain_url': null,
          'volume_mounts': [],
          'label': 'mongodb-odb',
          'provider': null,
          'plan': 'replica_set',
          'name': 'autosource_jobs_vehicle',
          'tags': [
            'mongodb'
          ]
        },
        {
          'credentials': {
            'database': 'foo1',
            'password': '******',
            'servers': [
              '10.66.105.42:28000',
              '10.66.105.45:28000',
              '10.66.105.41:28000'
            ],
            'uri': 'mongodb://*****:*****@10.66.105.42:28000,10.66.105.45:28000,10.66.105.41:28000/foo1?authSource=admin',
            'username': '******'
          },
          'syslog_drain_url': null,
          'volume_mounts': [],
          'label': 'mongodb-odb',
          'provider': null,
          'plan': 'replica_set',
          'name': 'autosource_vehicle_service_mongodb',
          'tags': [
            'mongodb'
          ]
        }
      ],
      'p-service-registry': [
        {
          'credentials': {
            'uri': 'https://eureka-a015d976-af2e-430c-81f6-4f99272ccd24.apps.preprdpcf01.foo.com',
            'client_secret': 'foo',
            'client_id': 'p-service-registry-bd61a360-f39a-45f8-b022-bbb',
            'access_token_uri': 'https://p-spring-cloud-services.uaa.sys.preprdpcf01.foo.com/oauth/token'
          },
          'syslog_drain_url': null,
          'volume_mounts': [],
          'label': 'p-service-registry',
          'provider': null,
          'plan': 'standard',
          'name': 'autosource_service_registry',
          'tags': [
            'eureka',
            'discovery',
            'registry',
            'spring-cloud'
          ]
        }
      ],
      'p-config-server': [
        {
          'credentials': {
            'uri': 'https://config-86e87517-cf1f-4112-af74-c9c7c957e7df.apps.preprdpcf01.foo.com',
            'client_secret': 'foo',
            'client_id': 'p-config-server-4c82e877-1c3c-4029-a7cc-4886ae3f444',
            'access_token_uri': 'https://p-spring-cloud-services.uaa.sys.preprdpcf01.foo.com/oauth/token'
          },
          'syslog_drain_url': null,
          'volume_mounts': [],
          'label': 'p-config-server',
          'provider': null,
          'plan': 'standard',
          'name': 'autosource_config_server',
          'tags': [
            'configuration',
            'spring-cloud'
          ]
        }
      ],
      'user-provided': [
        {
          'credentials': {
            'uri': '10.66.42.50:9001',
            'accesskey': 'foo',
            'secretkey': 'bar'
          },
          'syslog_drain_url': '',
          'volume_mounts': [],
          'label': 'user-provided',
          'name': 'foo_minio',
          'tags': []
        }
      ]
    }
  ";

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", environment2);

            ConfigurationBuilder builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(creator.ServiceInfos);
            Assert.Equal(4, creator.ServiceInfos.Count);

            var result1 = creator.GetServiceInfos <RedisServiceInfo>();

            Assert.NotNull(result1);
            Assert.Single(result1);

            var redis1 = result1[0];

            Assert.Equal("10.66.32.54", redis1.Host);

            var resutlt2 = creator.GetServiceInfos <MongoDbServiceInfo>();

            Assert.Equal(2, resutlt2.Count);

            var result3 = creator.GetServiceInfos <EurekaServiceInfo>();

            Assert.Single(result3);
            Assert.Equal("eureka-a015d976-af2e-430c-81f6-4f99272ccd24.apps.preprdpcf01.foo.com", result3[0].Host);
        }
예제 #16
0
        public void GetServiceInfosType_WithVCAPs_ReturnsExpected()
        {
            // Arrange
            var environment1 = @"
{
      'limits': {
        'fds': 16384,
        'mem': 1024,
        'disk': 1024
      },
      'application_name': 'spring-cloud-broker',
      'application_uris': [
        'spring-cloud-broker.apps.testcloud.com'
      ],
      'name': 'spring-cloud-broker',
      'space_name': 'p-spring-cloud-services',
      'space_id': '65b73473-94cc-4640-b462-7ad52838b4ae',
      'uris': [
        'spring-cloud-broker.apps.testcloud.com'
      ],
      'users': null,
      'version': '07e112f7-2f71-4f5a-8a34-db51dbed30a3',
      'application_version': '07e112f7-2f71-4f5a-8a34-db51dbed30a3',
      'application_id': '798c2495-fe75-49b1-88da-b81197f2bf06'
    }
}";
            var environment2 = @"
{
      'p-mysql': [
        {
            'credentials': {
            'hostname': '192.168.0.90',
            'port': 3306,
            'name': 'cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355',
            'username': '******',
            'password': '******',
            'uri': 'mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true',
            'jdbcUrl': 'jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt'
                },
          'syslog_drain_url': null,
          'label': 'p-mysql',
          'provider': null,
          'plan': '100mb-dev',
          'name': 'spring-cloud-broker-db',
          'tags': [
            'mysql',
            'relational'
          ]
        },
        {
            'credentials': {
            'hostname': '192.168.0.90',
            'port': 3306,
            'name': 'cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355',
            'username': '******',
            'password': '******',
            'uri': 'mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true',
            'jdbcUrl': 'jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt'
                },
          'syslog_drain_url': null,
          'label': 'p-mysql',
          'provider': null,
          'plan': '100mb-dev',
          'name': 'spring-cloud-broker-db2',
          'tags': [
            'mysql',
            'relational'
          ]
        }
      ]
  }";

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", environment1);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", environment2);

            ConfigurationBuilder builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            var result = creator.GetServiceInfos <MySqlServiceInfo>();

            Assert.NotNull(result);
            Assert.Equal(2, result.Count);
            Assert.True(result[0] is MySqlServiceInfo);
            Assert.True(result[1] is MySqlServiceInfo);

            var result2 = creator.GetServiceInfos(typeof(MySqlServiceInfo));

            Assert.NotNull(result2);
            Assert.Equal(2, result2.Count);
            Assert.True(result2[0] is MySqlServiceInfo);
            Assert.True(result2[1] is MySqlServiceInfo);

            var result3 = creator.GetServiceInfos <RedisServiceInfo>();

            Assert.NotNull(result3);
            Assert.Equal(0, result3.Count);

            var result4 = creator.GetServiceInfos(typeof(RedisServiceInfo));

            Assert.NotNull(result4);
            Assert.Equal(0, result4.Count);

            var result5 = creator.GetServiceInfo <MySqlServiceInfo>("foobar-db2");

            Assert.Null(result5);

            var result6 = creator.GetServiceInfo <MySqlServiceInfo>("spring-cloud-broker-db2");

            Assert.NotNull(result6);
            Assert.True(result6 is MySqlServiceInfo);

            var result7 = creator.GetServiceInfo("spring-cloud-broker-db2");

            Assert.NotNull(result7);
            Assert.True(result7 is MySqlServiceInfo);

            var result8 = creator.GetServiceInfo <RedisServiceInfo>("spring-cloud-broker-db2");

            Assert.Null(result8);
        }
        public void BuildServiceInfos_WithCloudFoundryServices_BuildsExpected()
        {
            // Arrange
            var environment2 = @"
{
      'p-mysql': [
        {
            'credentials': {
            'hostname': '192.168.0.90',
            'port': 3306,
            'name': 'cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355',
            'username': '******',
            'password': '******',
            'uri': 'mysql://*****:*****@192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?reconnect=true',
            'jdbcUrl': 'jdbc:mysql://192.168.0.90:3306/cf_b4f8d2fa_a3ea_4e3a_a0e8_2cd040790355?user=Dd6O1BPXUHdrmzbP&password=7E1LxXnlH2hhlPVt'
                },
          'syslog_drain_url': null,
          'label': 'p-mysql',
          'provider': null,
          'plan': '100mb-dev',
          'name': 'spring-cloud-broker-db',
          'tags': [
            'mysql',
            'relational'
          ]
    }
      ],
      'p-rabbitmq': [
        {
          'credentials': {
            'http_api_uris': [
              'https://*****:*****@pivotal-rabbitmq.system.testcloud.com/api/'
            ],
            'ssl': false,
            'dashboard_url': 'https://pivotal-rabbitmq.system.testcloud.com/#/login/03c7a684-6ff1-4bd0-ad45-d10374ffb2af/l5oq2q0unl35s6urfsuib0jvpo',
            'password': '******',
            'protocols': {
              'management': {
                'path': '/api/',
                'ssl': false,
                'hosts': [
                  '192.168.0.81'
                ],
                'password': '******',
                'username': '******',
                'port': 15672,
                'host': '192.168.0.81',
                'uri': 'http://*****:*****@192.168.0.81:15672/api/',
                'uris': [
                  'http://*****:*****@192.168.0.81:15672/api/'
                ]
},
              'amqp': {
                'vhost': 'fb03d693-91fe-4dc5-8203-ff7a6390df66',
                'username': '******',
                'password': '******',
                'port': 5672,
                'host': '192.168.0.81',
                'hosts': [
                  '192.168.0.81'
                ],
                'ssl': false,
                'uri': 'amqp://*****:*****@192.168.0.81:5672/fb03d693-91fe-4dc5-8203-ff7a6390df66',
                'uris': [
                  'amqp://*****:*****@192.168.0.81:5672/fb03d693-91fe-4dc5-8203-ff7a6390df66'
                ]
              }
            },
            'username': '******',
            'hostname': '192.168.0.81',
            'hostnames': [
              '192.168.0.81'
            ],
            'vhost': 'fb03d693-91fe-4dc5-8203-ff7a6390df66',
            'http_api_uri': 'https://*****:*****@pivotal-rabbitmq.system.testcloud.com/api/',
            'uri': 'amqp://*****:*****@192.168.0.81/fb03d693-91fe-4dc5-8203-ff7a6390df66',
            'uris': [
              'amqp://*****:*****@192.168.0.81/fb03d693-91fe-4dc5-8203-ff7a6390df66'
            ]
          },
          'syslog_drain_url': null,
          'label': 'p-rabbitmq',
          'provider': null,
          'plan': 'standard',
          'name': 'spring-cloud-broker-rmq',
          'tags': [
            'rabbitmq',
            'messaging',
            'message-queue',
            'amqp',
            'stomp',
            'mqtt',
            'pivotal'
          ]
        }
      ]
    }
  }";

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", environment2);

            ConfigurationBuilder builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config  = builder.Build();
            var creator = CloudFoundryServiceInfoCreator.Instance(config);

            Assert.NotNull(creator.ServiceInfos);
            Assert.Equal(2, creator.ServiceInfos.Count);
        }