void crearPiezaAvion() { pieza = RandomObjects.Choose(piezasAvion); Vector3 spawnPos = new Vector3(0, 0, 0); // Definimos la posición random desde la que saldrá el pajaro // Random.onUnitSphere * rangoCreacion elige un punto dentro de una esfera (rangoCreación es el radio de la esfera) spawnPos = this.transform.position + Random.onUnitSphere * rangoCreacion; //Crear la posición desde la que saldrá el pajaro que va a crearse. Solo variará en el eje y, mientras que la del eje X es la del spawner spawnPos = new Vector3(spawnPos.x, this.transform.position.y, 0); int rotacion = Random.Range(-1, 2) * Random.Range(10, 45); if (rotacion < 0) { rotacion = 360 + rotacion; } //Crear una instancia del obejeto pájaro en la posición definida GameObject piezas = Instantiate(pieza, spawnPos, Quaternion.AngleAxis(rotacion, Vector3.up)); Invoke("crearPiezaAvion", Random.Range(4f, 7f)); }
public async Task AuthenticateUsingUserName() { // create a user : var user = RandomObjects.RandomUser(new string[] { }).Generate(); var username = user.UserName; var password = "******"; var httpClient = factory.CreateSecureClient(); var account = await _CreateUser(httpClient, user, password); var bindings = new AuthenticateBindings { UserName = username, Password = password }; var response = await httpClient.PostAsync($"{TestStartup.PATH}/account/authenticate", new JsonContent(bindings)); var content = await response.Content.ReadAsStringAsync(); Assert.True(response.IsSuccessStatusCode, response.ReasonPhrase ?? ""); var result = JsonConvert.DeserializeObject <ApiModel <AccountDto> >(content); Assert.True(result.Result.Success, result.Result.Errors?.FirstOrDefault().Value?.FirstOrDefault() ?? ""); Assert.Empty(result.Result.Errors); var resultUser = result.Value; Assert.NotNull(resultUser); Assert.True(resultUser.IsAuthenticated); Assert.NotNull(resultUser.Token); Assert.NotEqual("", resultUser.Token); }
public async Task ReturnCurrentAfterAuthenticateWithToken() { // create a user : var user = RandomObjects.RandomUser(new string[] { }).Generate(); var username = user.UserName; var password = "******"; var httpClient = factory.CreateSecureClient(); var token = await this._CreateUserAndGetToken(httpClient, user, password); var requestMessage = new HttpRequestMessage(HttpMethod.Get, $"{TestStartup.PATH}/account/current"); requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = await httpClient.SendAsync(requestMessage); Assert.True(response.IsSuccessStatusCode, response.ReasonPhrase ?? ""); var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <ApiModel <AccountDto> >(content); Assert.True(result.Result.Success); Assert.Empty(result.Result.Errors); var resultUser = result.Value; Assert.NotNull(resultUser); Assert.True(resultUser.IsAuthenticated); Assert.Null(resultUser.Token); // no token for current, the token is sent on refresh and login; }
public async Task SendForgetMails() { // create a user : var user = RandomObjects.RandomUser(new string[] { }).Generate(); var username = user.UserName; var password = "******"; var httpClient = factory.CreateSecureClient(); var token = await this._CreateUserAndGetToken(httpClient, user, password); var bindings = new ForgotPasswordBindings { UserName = user.UserName }; var authrequest = await httpClient.PostAsync($"{TestStartup.PATH}/account/forgot", new JsonContent(bindings)); var authcontent = await authrequest.Content.ReadAsStringAsync(); var authresult = JsonConvert.DeserializeObject <ApiModel <AccountDto> >(authcontent); var authuser = authresult.Value; Assert.Null(authuser); // we expect no informations; Assert.True(authrequest.IsSuccessStatusCode, authrequest.ReasonPhrase ?? ""); // emails : var recievedEmails = this.factory.EmailSender.Flush(); // we expect to have recieved a message : Assert.NotEmpty(recievedEmails); var message = recievedEmails.First().message; // find the link in the email = var regex = new Regex("href=[\"'].*action=(.+)(&[^\"'])?[\"']", RegexOptions.IgnoreCase); Assert.Matches(regex, message); var encodedlink = regex.Match(message).Groups[1].Value; var actionLink = WebUtility.UrlDecode(encodedlink); // we expect the message to have a link to the reset page: var resetroute = "account/reset"; Assert.Matches(new Regex(resetroute, RegexOptions.IgnoreCase), actionLink); }
void crearNube() { nube = RandomObjects.Choose(nubes); Vector2 spawnPos = new Vector2(0, 0); // Definimos la posición random desde la que saldrá el pajaro // Random.onUnitSphere * rangoCreacion elige un punto dentro de una esfera (rangoCreación es el radio de la esfera) spawnPos = Random.insideUnitCircle * rangoCreacion; //Crear la posición desde la que saldrá la nube que va a crearse Vector3 spawn = new Vector3(spawnPos.x, this.transform.position.y - 20f, posicionZ); //Crear una instancia del obejeto en la posición definida Instantiate(nube, spawn, Quaternion.identity); Invoke("crearNube", Random.Range(4f, 6f)); }
void crearPajaro() { pajaro = RandomObjects.ChooseWeigther(pajarosPrioridades); Vector3 spawnPos = new Vector3(0, 0, 0); // Definimos la posición random desde la que saldrá el pajaro // Random.onUnitSphere * rangoCreacion elige un punto dentro de una esfera (rangoCreación es el radio de la esfera) spawnPos = this.transform.position + Random.onUnitSphere * rangoCreacion; //Crear la posición desde la que saldrá el pajaro que va a crearse. Solo variará en el eje y, mientras que la del eje X es la del spawner spawnPos = new Vector3(this.transform.position.x, spawnPos.y, 0); //Crear una instancia del obejeto pájaro en la posición definida GameObject pajaros = Instantiate(pajaro, spawnPos, Quaternion.identity); Invoke("crearPajaro", Random.Range(2f, 5.0f)); }
void crearBoost() { boost = RandomObjects.ChooseWeigther(boostPrioridades); Vector3 spawnPos = new Vector3(0, 0, 0); // Definimos la posici?n random desde la que saldr? el pajaro // Random.onUnitSphere * rangoCreacion elige un punto dentro de una esfera (rangoCreaci?n es el radio de la esfera) spawnPos = this.transform.position + Random.onUnitSphere * rangoCreacion; //Crear la posici?n desde la que saldr? el pajaro que va a crearse. Solo variar? en el eje y, mientras que la del eje X es la del spawner spawnPos = new Vector3(spawnPos.x, this.transform.position.y, 0); //Crear una instancia del obejeto p?jaro en la posici?n definida GameObject boosts = Instantiate(boost, spawnPos, Quaternion.identity); Invoke("crearBoost", Random.Range(5f, 7f)); }
public async Task ResetsPassword() { // create a user : var user = RandomObjects.RandomUser(new string[] { }).Generate(); var username = user.UserName; var oldpassword = $"username-Pa$$w0rd-old"; var httpClient = factory.CreateSecureClient(); var token = await this._CreateUserAndGetToken(httpClient, user, oldpassword); // forgot his email var bindings = new ForgotPasswordBindings { UserName = username }; var forgotrequest = await httpClient.PostAsync($"{TestStartup.PATH}/account/forgot", new JsonContent(bindings)); var forgotcontent = await forgotrequest.Content.ReadAsStringAsync(); var forgotresult = JsonConvert.DeserializeObject <ApiModel <AccountDto> >(forgotcontent); // emails : var recievedEmails = this.factory.EmailSender.Flush(); var message = recievedEmails.First().message; // find the link in the email = var regex = new Regex("href=[\"'].*action=(.+)(&[^\"'])?[\"']", RegexOptions.IgnoreCase); var encodedlink = regex.Match(message).Groups[1].Value; var actionLink = WebUtility.UrlDecode(encodedlink); // // finds the action = // var uri = new Uri(actionLink); // var action = HttpUtility.ParseQueryString(uri.Query).Get("action"); var newpassword = $"username-Pa$$w0rd-reset"; var encodedPassword = WebUtility.UrlEncode(newpassword); // request rest var resetrequest = await httpClient.GetAsync($"{actionLink}&password={encodedPassword}"); var resetcontent = await resetrequest.Content.ReadAsStringAsync(); var resetresult = JsonConvert.DeserializeObject <ApiModel <AccountDto> >(resetcontent); Assert.True(resetrequest.IsSuccessStatusCode, resetrequest.ReasonPhrase ?? ""); Assert.True(resetresult.Result.Success, resetresult.Result.Errors?.FirstOrDefault().Value?.FirstOrDefault() ?? ""); Assert.Empty(resetresult.Result.Errors); var verifyNewbindings = new AuthenticateBindings { UserName = user.UserName, Password = newpassword }; var verifyNewresponse = await httpClient.PostAsync($"{TestStartup.PATH}/account/authenticate", new JsonContent(verifyNewbindings)); var verifyNewcontent = await verifyNewresponse.Content.ReadAsStringAsync(); Assert.True(verifyNewresponse.IsSuccessStatusCode, verifyNewresponse.ReasonPhrase ?? ""); var verifyNewResult = JsonConvert.DeserializeObject <ApiModel <AccountDto> >(verifyNewcontent); Assert.True(verifyNewResult.Result.Success, verifyNewResult.Result.Errors?.FirstOrDefault().Value?.FirstOrDefault() ?? ""); Assert.Empty(verifyNewResult.Result.Errors); var resultUser = verifyNewResult.Value; Assert.NotNull(resultUser); Assert.True(resultUser.IsAuthenticated); Assert.NotNull(resultUser.Token); Assert.Equal(user.UserName, resultUser.UserName); Assert.NotEqual("", resultUser.Token); var verifyOldbindings = new AuthenticateBindings { UserName = user.UserName, Password = oldpassword }; var verifyOldresponse = await httpClient.PostAsync($"{TestStartup.PATH}/account/authenticate", new JsonContent(verifyOldbindings)); var verifyOldcontent = await verifyOldresponse.Content.ReadAsStringAsync(); Assert.True(verifyOldresponse.IsSuccessStatusCode, verifyOldresponse.ReasonPhrase ?? ""); var verifyOldResult = JsonConvert.DeserializeObject <ApiModel <AccountDto> >(verifyOldcontent); Assert.False(verifyOldResult.Result.Success); Assert.NotEmpty(verifyOldResult.Result.Errors); // var resultOldUser = verifyOldResult.Value; // Assert.Null(resultOldUser); // Assert.False(resultOldUser.IsAuthenticated); // Assert.Null(resultOldUser.Token); }