text:
Remembrance Sunday, 08-11-2020, 0930
by Parish Clerk | Oct 29, 2020 | Parish News | 3 comments
We are unable to hold our usual parade and service this year.
This year is all about compromise.
We will be holding a condensed service for a small, closed group of invited people. This will start at 9.30am and will be broadcast live on our Facebook page. We hope that other community groups will also be able to broadcast it.
We would encourage people to pay their own respects after 10.00am so that we can maintain the government's guidelines on safety during Covid-19.
Please respect our decision and the reasons that we have had to make these changes.
Hazel Kinger on October 29, 2020 at 10:54 pm
Thankyou different times , Safety with respect is very much appreciated
Jane Ridsdill on October 30, 2020 at 4:57 pm
To be honest, I think people would keep their distance anyway. It seems a shame that people are going to be excluded in making a choice to go to the service. They manage it when going to Church and this service will be outside. What is the problem?
Parish Clerk on November 2, 2020 at 11:40 am
We are adhering to Government guidelines which are very clear in trying to keep people as safe as possible from the Covid-19 virus. New guidelines may now be issued after Saturday's announcement in which case we will need to review our current plans.


text:
namespace F1InXAML
{
    public interface ISlideNavigationSubject
    {
        int ActiveSlideIndex { get; set; }
    }
}

redpajama_set_name: RedPajamaGithub


Had a great trip along the North Coast of the Olympic Peninsula – too a few shots at Lake Crescent before heading along to Neah Bay. Spotted a little beach at Shipwreck Point and decided to spend some time there. Good rock pools, the tide had been quite low and coming in fast so also tried so time-lapse photography of the incoming water. Had my lunch sitting on a rock enjoying the peace and sunshine when a family of Sea Otters came out of the surf! I don't think they had noticed me – so I kept still and just watched as they rolled in the sand playing. After a few minutes I reached for my camera and knew probably the first click of the shutter would scare them away – so just managed two shots. Also focused manually as I wanted to be sure the auto focus didn't give me a perfect shot of the rocks they were behind with a fuzzy otter in the background. Wished I had my camera rather than a pie in my hand as they came out of the surf – but the pictures in my head will always be there. Left the beach, and the otters in peace, and headed for Clallam Bay – very satisfied to have been so fortunate.


"The philosophy of a new social order based on liberty unrestricted by man-made law; the theory that all forms of government rest on violence, and are therefore wrong and harmful, as well as unnecessary" (50).
"The most violent element in society is ignorance" (49).
"It requires less mental effort to condemn than to think…Rather than to go to the bottom of any given idea, to examine into its origin and meaning, most people will either condemn it altogether, or rely on some superficial or prejudicial definition of non-essentials" (50).
I have this experience often.
"Religion! How it dominates man's mind, how it humiliates and degrades his soul. God is everything, man is nothing, says religion. But out of that nothing God has created a kingdom so despotic, so tyrannical, so cruel, so terribly exacting that naught but gloom and tears and blood have ruled the world sinces gods began. Anarchism rouses man to rebellion against this black monster. Break your mental fetters, says Anarchism to man, for not until you think and judge for yourself will you get rid of the dominion of darkness, the greatest obstacle to all progress" (53).
In light of all the religious fundies (Christian or Islamic – take your pick) out to "save" and "purify" the world lately, this quote rings particularly clear. Would that more people could think. Period.
This entry was posted on Wednesday, December 13th, 2006 at 12:01 am and is filed under Comps, Radical social theory.	You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.


Tryouts for ages 14 and under will be in late October, 15 and older will be in early November. A team will be comprised of 9-10 players and fees for the season will vary based on number of players and tournaments entered, etc.
*IMPORTANT NOTE: You will need to attend BOTH sessions to tryout!
18 and under September 1st, 2000 or September 1st, 1999 and a high school student in the 12th grade during some part of the academic year.


text:
President Donald J. Trump Announces Intent to Appoint Individual to a Key Administration Post
Issued on: May 29, 2019
Today, President Donald J. Trump announced his intent to appoint the following individual to a key position in his Administration:
James E. Hutton of Virginia, to be an Assistant Secretary of Veterans Affairs for Public and Intergovernmental Affairs.
Mr. Hutton currently serves as Deputy Assistant Secretary for Public Affairs at the Department of Veterans Affairs (VA). He previously served as Executive Director of Public Affairs and Director of Media Relations at the VA. Before joining the VA, Mr. Hutton served as the Chief Communication and Engagement Officer for Tragedy Assistance Program for Survivors, a non-profit located in Arlington, Virginia. Additionally, Mr. Hutton served for nearly 27 years as an active duty officer in the United States Army, retiring as a colonel. He holds a Bachelor of Science degree from Oklahoma State University, a Master of Arts degree from Webster University, and a Master of Science degree from the National Defense University's National War College. Mr. Hutton's military awards include the Legion of Merit, three awards of the Bronze Star Medal, and two awards of the Defense Meritorious Service Medal.

redpajama_set_name: RedPajamaCommonCrawl


Hamartia. From Greek meaning a fatal flaw leading to the downfall of a tragic hero or heroine. In Sophocles's Oedipus Rex and Antigone, Oedipus, Antigone, and especially Creon all display their flaw of being stubborn which ultimately leads to the tragedy in each play. When Teiresias challenges Oedipus by saying that he is the one plaguing the city, instead of listening to the other side of the argument, Oedipus tells him to be "Out of this place! Out of my sight!" (Sophocles 23). Oedipus's stubbornness leads him to become blind to the truth and to reason. Antigone, on the other hand, acts rashly to get what she wants as quick as possible. Antigone believes that if she's stubborn and can hold her ground, Creon, who has power, will not be "strong enough to stand in [her] way" (191). This flaw in character and judgement leads Antigone to lose her life just because she fights instead of talking through the problem. Another factor that leads to Antigone's tragic death is Creon's stubbornness and pride which leads to his inability to listen to other people's opinions like Teiresias, who he knows is a proven credible source. Once Creon realized that his hamartia was causing problems, he admits to his flaw by saying, "but it is worse / to risk everything for stubborn pride" (235). Sophocles proves that stubbornness causes blindness or deafness of some sort, which leaves the character deprived of a perspective.


Autavia 2446 H "Jochen Rindt"
This execution of the Autavia 2446 (first case - second dial) is nicknamed Jochen Rindt after the racing driver who won both Le Mans 1965 for Ferrari and posthumously Formula One 1970 in a Lotus 72.
When I got this watch the dial had hundreds of chalk stars on the dial, probably due to water entering the watch. Watchmaker Giancarlo Martini from Parma, Italy made a fantastic job cleaning the dial - see the double photo.
The Autavia 2446 - 3646 Timeline is made by Paolo Bernardi, who has enormous knowledge of early Autavias.


A bill that would create an 11-member board to oversee embattled Bergen Regional Medical Center may soon be voted upon by the Legislature after it cleared a key panel Thursday.
The Assembly Budget Committee approved the measure calling for more oversight at the hospital which is under increased scrutiny following reports of alleged assaults at the state's largest medical center.
"The patients and staff at Bergen County Regional Medical Center deserve safe treatment in a safe environment," said Assemblywoman Valerie Huttle, D-Englewood. "But current law does not give our county government the power to take an increased role in oversight."
The bill calls the new board to replace the hospital's primary regulator, the Bergen County Improvement Authority, which has long complained its hands are tied in managing the for-profit company that runs the hospital because of a faulty contract drafted two decades ago.
The bill was written in response to a report published in The Record last month that revealed hundreds of alleged assaults at the 1,000-bed hospital in Paramus, which provides long-term care, psychiatric and substance abuse treatment and acute care.
Seniors were allegedly punched in the long-term care unit, staff and patients were allegedly injured in locked down psychiatric units, a 6-year-old girl was allegedly sexually assaulted, and a nurse reported being beaten so severely that she could not return to work for more than year, police reports from revealed.
The contract with the company that manages the hospital, Bergen Regional Medical Center LP, is set to expire in March 2017.
An identical bill was approved by a Senate committee last week. The bills will now head to both the full Assembly and Senate for consideration. There are two more voting sessions next week before the legislature's summer recess.
County Executive James Tedesco testified to the Assembly committee today in support of the bill.
"This legislation ensures Bergen County will have appropriate oversight, a safe working environment for its care providers and sound fiscal management on behalf of the taxpayers," said Tedesco, who would sit on the new board. "The hospital's services are needed more than ever for seniors, addicts and even children."


text:
Wave Race 64
Release Date Nov 1, 1996
Genres Racing
Wave Race 64 is a racing video game developed by Nintendo EAD and published by Nintendo. It was released for the Nintendo 64 in 1996 and is a follow-up to the 1992 Game Boy title Wave Race. Most of the game involves the player racing on a Jet Ski on a variety of courses while successfully manoeuvring the vehicle around various buoys. A multiplayer mode where two players can compete against each other on a chosen course is also included. The game supports the Controller Pak, which allows players to transfer saved data from one game cartridge to another.
Originally referred to as "F-Zero on water", the game was intended to feature high-speed boats with transforming capabilities. However, these were ultimately replaced with Jet Skis as producer Shigeru Miyamoto felt that the game would not be differentiated enough from other titles on other systems. Wave Race 64 received acclaim from critics, who praised the game's satisfying controls and dynamic watery environments. The game is credited for helping Nintendo effectively make its paradigmatic leap from the 16-bit 2D graphics of the Super Nintendo Entertainment System to the Nintendo 64's 3D capabilities.
browser_not_supportedNo matching listings
There are no matching listings for this product
Be The First To Sell It
Reviews for Wave Race 64
rate_reviewNo Reviews


Descent campaign tracker is an online tool to assist you with playing Descent's advanced campaign system. Currently, that is the Road to Legend and the Sea of Blood expansions. These games have a lot of information to keep track of, such as conquest, experience, and maps. Descent campaign tracker simplifies a lot of that work, and also gives a convenient place to store the information, which is with you wherever there is a computer and the internet.
The best use of this website is to have some sort of computer nearby while you are playing your campaign. A laptop is the simplest since it can sit right next to the game easily. Whenever an action happens that can be tracked, simply input it into the website. These actions include things like activating a glyph, killing a hero, entering a dungeon, buying trait dice upgrades, and a lot more. Experience, conquest, and gold are all automatically updated, keeping your group more focused on the fun part of playing, instead of the upkeep.
This site is not associated with Fantasy Flight Games but does have permission to use its artwork as noted at the bottom of every page. This website is totally, 100% free to use. It was developed by me, Steven Yackel, a (huge) fan of the game, in my spare time. My Board Game Geek username is spazard1 if you want to look me up.


text:
Albiert Michajłowicz Diemczenko (ros. Альберт Михайлович Демченко; ur. 27 listopada 1971 w Czusowoju) – rosyjski saneczkarz startujący na torach lodowych, trzykrotny medalista olimpijski, dwukrotny medalista mistrzostw świata oraz zdobywca Pucharu Świata.

Kariera
Z zawodu żołnierz, od 1989 roku startuje w zawodach międzynarodowych, początkowo w barwach ZSRR, potem WNP, następnie Rosji. Pierwsze sukcesy osiągnął w 1996 roku, kiedy podczas mistrzostw Europy w Siguldzie zdobył srebrny medal w jedynkach i brązowy w dwójkach. W kolejnych latach zdobył jeszcze pięć medali, w tym złote w jedynkach na ME w Winterbergu (2006) i ME w Siguldzie (2010) oraz w drużynie na ME w Paramonowie (2012) i ME w Siguldzie (2014). Ponadto w 2012 roku zajął drugie miejsce w jedynkach i konkurencji drużynowej podczas mistrzostw świata w Altenbergu.

W 1992 roku wystartował na igrzyskach olimpijskich w Albertville, zajmując ósme miejsce w dwójkach. Startował także na trzech kolejnych edycjach tej imprezy, jednak nie zdobył medalu. Na podium stanął podczas igrzyskach w Turynie w 2006 roku, gdzie był drugi w jedynkach. W zawodach tych rozdzielił na podium Włocha Armina Zöggelera i Łotysza Mārtiņša Rubenisa. Na rozgrywanych cztery lata później igrzyskach w Vancouver był czwarty, przegrywając walkę o podium z Zöggelerem. Brał też udział w igrzyskach olimpijskich w Soczi,

Wielokrotnie zajmował miejsca w czołówce zawodów Pucharu Świata. Łącznie 51 razy stawał na podium zawodów tego cyklu, z czego 17 razy zwyciężał (15 razy w jedynkach i 2 razy w zawodach drużynowych). W sezonie 2004/2005 jako pierwszy Rosjanin zdobył Puchar Świata. Był też drugi w klasyfikacji generalnej sezonu 2009/2010 oraz trzeci w sezonach 2007/2008 i 2010/2011.

Po sezonie 2013/2014 zakończył sportową karierę.

Osiągnięcia

Igrzyska olimpijskie

Puchar świata

Miejsca na podium w klasyfikacji generalnej

Zbiorcze zestawienie podium w zawodach Pucharu Świata

Przypisy

Bibliografia
 Profil na stronie FIL

Medaliści Zimowych Igrzysk Olimpijskich 2006
Medaliści Zimowych Igrzysk Olimpijskich 2014
Rosyjscy medaliści olimpijscy
Rosyjscy saneczkarze
Uczestnicy Zimowych Igrzysk Olimpijskich 1992
Uczestnicy Zimowych Igrzysk Olimpijskich 1994
Uczestnicy Zimowych Igrzysk Olimpijskich 1998
Uczestnicy Zimowych Igrzysk Olimpijskich 2002
Uczestnicy Zimowych Igrzysk Olimpijskich 2010
Urodzeni w 1971

redpajama_set_name: RedPajamaWikipedia


gold mine processing plant capital cost- capital cost breakdown for processing gold 2011 ,gold process plant capital costs - BINQ Mining Gold Plant Capital Cost | Process Crusher, Mining Equipment , Gold Plant Capital Cost 30 Views The Zenith is the professional mining equipments Chat Now capital cost gold .capital cost for processing iron orerunning costs for crushing of iron ore worldcrushers running costs for crushing of iron ore Posts Related to capital cost iron ore beneficiation plant mineral , beneficiation plant costs Capital Cost Iron Ore Beneficiation Plant Gold .
Mining Cost Models Free Data for Mine Cost Estimates Free 5,000 tpd Open Pit Cost Model Other cost models, included in a Mining Cost Service: Open Pit, Underground, Placer, Milling & Heap Leach 5,000 Tonne per Day Open .
KSM (Kerr-Sulphurets-Mitchell): ENGINEERING STUDIES 2012 Updated Preliminary Feasibility Study 2011 Updated Preliminary Feasibility Study 2010 Preliminary Feasibility Study 2009 Preliminary Assessment 2008 Preliminary .
capital cost gold processing plant heavy industry is specialized in the design, manufacture and supply of crushing equipment used in mining industry , gold mill plant capital cost gold mining mill for sale , gold and copper .
capital cost breakdown for processing gold Overview CostMine Industry Standard for Mining Cost Estimating Mining Cost Service, Mine , The guide includes both CAPITAL COSTS and HOURLY OPERATING COSTS for over .
, confusing, and inadequate to determine the real cost of mining gold Furthermore, in its 2012 Annual Report, Goldcorp explains its profit margin per ounce of gold with this graphic: This figure suggests Goldcorp had a margin .
Cost estimating advice Chapter 9 in Perry's Chemical Engineers' Handbook (library at Ref 6602021 C517) Includes capital costs for several plants, equations for some equipment, etc Oil & Gas Journal (search plant .
capital cost gold processing plant - 80-100TPH Stone Crushing , captial cost gold processing plant, , gold mill plant capital cost gold mill plant capital cost,processing machine sale,Gold , At the Gold ore Processing .
capital cost for processing iron ore - crusherasia Posts Related to capital cost for iron ore pellet plant in Patna, , Ore Beneficiation Process Mario , gold ore mining equipment in china gold ore crushing machine .
Cost of Capital by Sector Data Used: Value Line database, of 6177 firms Date of Analysis: Data used is as of January 2013 can be obtained by clicking here on which companies are included in each industry Industry Name .
2 SA Mine : Review of trends in the South African mining industry In 2011, the promise of higher prices and their impact on profitability largely came to fruition in the mining industry Despite the improved results, limited growth in .
Page | 2 capital and operating cost estimates and recovery parameters, which are at a confidence level that supports a new Mineral Reserve and Mineral Resource , Based on the results, the Company has made a decision to .
capital cost breakdown for processing gold 2011 Gold Mining Cost Breakdown - Gold Mine Capital Cost Breakdown, process crusher, , (2011 or 2012 I believe) on the all-in cost to mine an ounce of Gold was between $1215 and $ .
Economic of Copper Processing 6,617 views Share Like Download Pambudi Pajar Pratama, Superintendent Level Follow 0 0 1 Published on Jun 23, 2013 The balance between milling cost Most mills keep detailed accounts of .
capital cost mineral processing Pretium Resources Inc: Updated Construction Cost, February 17, 2016 05:00 ET Pretium Resources Inc: Updated Construction Cost , Mineral Water Project Information | Mineral Water, Mineral .
Are investors now being told what it really costs to produce an ounce of gold? According to experts, that is debatable Financial Post .
Mining machinery Capital Goods & Industrial Engineering Table of contents Process plant exposure preferable to mining operations 4 The changing face of mining investment 7 Focus on brownfield investment favours mining .
Comparison of project structures in an LNG liquefaction plant 03/01/2012 Thomas E Holmberg, Baker Botts LLP, Washington, DC Photo courtesy of Sempra Energy A fundamental decision that project participants must make .
, over 2700 tonnes of gold were produced and over 1600 tonnes of gold were recycled in 2011 Gold is valuable is due to its intrinsic properties: it is highly durable, malleable and never loses its lustre Most importantly, it is It is .
capital cost breakdown for processing gold break even on gold mining industry average What is the average cost of mining gold per ounce The gold mining industry , Gold Mine Capital Cost Breakdown | Process Crusher, Mining .
Bureau of Justice Statistics (BJS) Capital Punishment, 2011 Capital punishment refers to the process of sentencing convicted offenders to death for the most , Detailed Cost Estimating Excerpt from The Architect s Detailed cost .
SA REGION TECHNOLOGY INNOVATION PRESENTATION JANUARY 2014 2 2014 South African Operations Site Visit DISCLAIMER Certain statements contained in this document, other than statements of historical fact .
Home >Products >capital cost breakdown for processing gold 20 Get in touch with us Hot Products Auto Centering Vibrating Screen Round Vibrating Screen(YA) Grid Type Ball Mill Energy Saving Ball Mill Autogenous Mill .
ACN: 68 108 737 711 5 SUITE 2, LEVEL 5, 71 MACQUARIE STREET, SYDNEY NSW 2000 AUSTRALIA vangomining Table 5: K2 Mining Costs Summary Cost Category Unit Rate Y1 Y2 Total Capital Lateral ($M) $2918 /t .
WORK BREAKDOWN STRUCTURE FOR A TYPICAL MINE LEGEND [GeoMine] = Technology Sites [Exploration-Geology-Reserves] = Edumine Courses [GEOCHEMISTRY] = State , 1 EXPLORATION [G EO MINE] [E XPLORATION .
The following 2011 capital cost breakdown was provided for release by Eni1 1 Zennaro, R , The capital cost split to calculate the GTL contribution was estimated based on refining capital cost 7 Fundamentals of gas to liquids .
capital cost gold processing plant capital equipment used in india mining capital cost of beneficiation plant manufacturer capital of mining in northern rhodesia in 1900 capital cost blake jaw crusher capital cost for processing iron .
gold mine processing plant capital cost Allied Nevada Gold Corp (ANV):Properties:Hycroft Gold Mine The Hycroft gold mine is located in the Sulfur Mining , capital cost gekko mining processing plant for sale capital cost gekko .
GOLD PROCESSING PLANTS - Oro Industries Portable placer gold processing plants for alluvial mining, , fine gold recovery, gold processing plants, gold , Captial cost gold processing plant - Crusher Unit >Captial cost gold .


What are the closest stations to Canchas Sintéticas "Boca Juniors"?
Gran Aki is 122 meters away, 2 min walk.
Av. Gonzáles Suárez Y Paseo De Los Cañaris is 248 meters away, 4 min walk.
Ciudadela Retamas Bajas is 359 meters away, 5 min walk.
Which Bus lines stop near Canchas Sintéticas "Boca Juniors"?
These Bus lines stop near Canchas Sintéticas "Boca Juniors": 15, 3, 50.
data-title="Canchas Sintéticas "Boca Juniors", Cuenca"
Looking for directions to Canchas Sintéticas "Boca Juniors" in Cuenca, Ecuador? Your journey just became much easier!
Download the Moovit App to find the fastest directions and to see the latest Bus schedules to Canchas Sintéticas "Boca Juniors". Find updated times for all the routes that are available with real-time step-by-step directions from Canchas Sintéticas "Boca Juniors".
The Moovit App also shows you the closest stops and stations to your destination. Choose from a list of stops closest to Canchas Sintéticas "Boca Juniors": Gran Aki; Av. Gonzáles Suárez Y Paseo De Los Cañaris; Ciudadela Retamas Bajas.
Pick Bus options that you can take to get to Canchas Sintéticas "Boca Juniors". Here's a list of a few lines that pass near your destination - Bus: 15, 3, 50.
Looking to plan your return trip from Canchas Sintéticas "Boca Juniors", but don't know the street address? You can select your destination from our online map and Moovit will find the best available routes to get you where you need to go!


text:
Sailor staged racial vandalism of bunk on aircraft carrier, Navy investigation finds
by: Nexstar Media Wire
NORFOLK, Va. – An investigation into claims of racially-motivated vandalism on the aircraft carrier USS George H.W. Bush has revealed that the alleged victim, a Sailor on board the ship, staged the incident himself, according to the Navy.
The Sailor, who is not being identified, made a post on his Facebook account in November with several pictures of the alleged vandalism. The pictures show the Sailor's bunk on board the ship ripped apart, trash thrown around and racist words written in black marker across the walls and linens.
"I am a United States sailor. I proudly serve the Navy and this is what I'm receiving in return. SailorAskingForHelp things are getting out of hand. Please share. Somebody knows something. (Thank you all for your guidance)"
Since the post was made on November 15, it has been shared over 20,000 times and has over 2,600 comments.
The Navy launched a Naval Criminal Investigative Service-supported command investigation into the claims, which were ultimately determined to be unfounded.
The Sailor received administrative actions and additional counseling and training, and will remain a member of the crew of the USS George H.W. Bush and will continue to perform his military duties, according to a Navy release.
The release said the Navy is using the situation to provide additional training to the crew and reemphasize that vandalism and racism will not be tolerated.
"The United States Navy does not tolerate racial discrimination of any form and the well-being of our Sailors is our top priority," a statement from the Navy reads.
by WGNO Web Desk / Jan 17, 2021
RESERVE, La. - Parts of St. John the Baptist Parish will have a water outage beginning at 11:00 p.m. According to St. John the Baptist Parish government, the estimated time frame for the water outage is 3 to 4 hours.
When water is restored, as a precaution, all customers in Reserve, Garyville, and Mt. Airy will be under a Boil Water Advisory until further notice. This Boil Water Advisory is to remain in effect until lifted by the Louisiana Department of Health, estimated to be within 48 hours.
Raising money for local artists – and Cafe Reconcile – one 'bid' at a time
News / 2 seconds ago


Ravens punter Sam Koch will not be on the AFC Pro Bowl roster on Jan. 29 in Orlando unless the Indianapolis Colts' Pat McAfee bows out. But Koch still had a season worth mentioning.
The second-longest tenured Raven, who just completed his 11th year with the team, Koch was tied with the Tampa Bay Buccaneers' Bryan Anger for third in the NFL in punts inside opponents' 20-yard line. His total of 37 was just two shy of his career-best mark set in 2010.
Since 2006, when the organization selected him in the sixth round of that year's draft, Koch has dropped 317 punts inside the 20. In that time he trails only the Kansas City Chiefs' Dustin Colquitt, who has placed 364 punts inside the 20.
Koch ranked eighth in the NFL in number of punts (80), tied for 15th in gross average (45.8) and 18th in net average (39.9). He had better numbers (46.7 gross average yards and 42.9 net average yards) in 2015, when he was selected to his first Pro Bowl, but Koch said he would have gladly given up any individual accolades for team success.


60 F clear, no wind.
With these long days I figured I'd try a late post gymnastics drop off.
#516 Hudson River @ Mechanicville dock.
The light on the east bank of the river was awesome, I knew it wouldn't last.
This is after about 20 minutes or so.
This is a public dock, I've been by here many times, but this is the first painting here.


Four full-color dolls and 38 costumes portray a proper Victorian-era family at work and play. Gorgeous garb -- from warm wintercoats to summer bathing costumes--for every occasion, from a formal wedding to a friendly game of lawn croquet. 12 plates.
Description: Four full-color dolls and 38 costumes portray a proper Victorian-era family at work and play. Gorgeous garb-from warm wintercoats to summer bathing costumes-for every occasion, from a formal wedding to a friendly game of lawn croquet. 12 plates.


text:
See the Trailer for Extreme Kayaking Documentary 'Chasing Niagara'
"Is it worth it to possibly lose a friend?" Red Bull Media has unveiled a trailer for a documentary film called Chasing Niagara, profiling the life of "extreme kayaker" Rafa Ortiz and his dream of paddling over the Niagara Falls. The doc looks at the way he takes big risks to live a life on the edge, literally, kayaking over waterfalls and in places where no one has ever kayaked before. Of course Red Bull is releasing this film, it's right up their alley. The footage is impressive as it seems they've captured some of the best shots they could of Rafa and his crew, including footage from cameras mounted to his helmet. I'm a big fan and supporter of adventure junkies and risk takers, and this looks like another exhilarating, inspiring doc about them. Enjoy.
Here's the official trailer for Rush Sturges' documentary Chasing Niagara, direct from YouTube:
When pro kayaker Rafa Ortiz decides to follow his dream to paddle over Niagara Falls, he sets in motion an incredible series of events that eventually takes on a life of its own. To prepare for this mission, Rafa enlists the help of world-renowned paddler Rush Sturges and a tight team of their friends. Together they go on a remarkable three-year journey from the rainforest rivers of Mexico to the towering waterfalls of the U.S. Northwest. Chasing Niagara is directed by filmmaker Rush Sturges, making his feature directing debut with this documentary. The film opened in Europe last year, but it just arriving in the US this year. Chasing Niagara opens in select US theaters + on VOD/iTunes starting this July. Who wants to see this?
Bet there's some amazing footage in this.
Carpola on Jun 23, 2016
That looks crazy. I would never to that. But I am boring.
DAVIDPD on Jun 23, 2016
This makes me thirsty for a sweet, bubbly, highly caffeinated beverage....
TheOct8pus on Jun 23, 2016
This would be pretty dope.. fresh sports doc.
Nick Sears on Jun 23, 2016
My younger edition would enjoy that very much. I don't like watching what I haven't done, makes me think should I reconsider doing it and that's plain craziness ...
shiboleth on Jun 23, 2016
What is opening day
Mary Cripps on Jun 29, 2016


text:
Q: Porting from NVP to REST API I am currently using PayPal's NVP API. And using the below methods.

*

*TransactionSearch (To pull in historic and recent transactions)

*GetTransactionDetails (To fetch detail for each transaction)

*TransactionSearch using PROFILEID (To get subscription/recurring transactions related to a particular subscription/recurring profile using the Subscription/Profile ID)

*RefundTransaction (To refund a transaction)

*ManageSubscriptions (To manage - cancel, suspend, reactivate a particular subscription using the Recurring/Subscription/Profile ID)

*GetBalance (To get balance for a particular account)

*MassPay (To send money to other PayPal accounts using the email address) I would like to know and get assured that I won't be missing anything when I port to REST, and will get all the details (including all the fields) that I have been getting from the NVP response.

Question 1
Can you map me to the respective REST methods for the above 7 cases that I have listed?
Question 2
Can I use the same credentials for REST API? Or do I need to use something else? Doing so will require the users to reconnect to my system via some other method?
Question 3
Another thing I wanted to know is, that if the REST API can be used to pull in historic data(data for all date ranges)? Is there any restriction on the user-type or type of PayPal account or date-ranges or anything else when using the REST API?
Question 4
What else do I need to take care of when I port from NVP to REST?
Please help!

redpajama_set_name: RedPajamaStackExchange


text:
NXT Women's Division: Booked To Be More Than Just "Women"
By: Scott Edwards (Editor) | February 3, 2020
Before getting bashed from how the title may sound, here is the explanation. Women in professional wrestling, more specifically the WWE, at one time were looked at in a completely different light than they are today. They were used as "eye candy", rather than being looked at as damn good professional wrestlers. And in the past decade, that trend has changed for the better. Especially in the WWE, where the "women's revolution" took center stage and things began to change for the better. Respect was an important word to be used here. They have done a lot to improve how general wrestling fans see women and it is beginning to feel like we are on equal ground, finally. But Becky Lynch raised something a few weeks ago on "WWE Backstage". That something was that there is another bigger step to take. Making fans see it as equal ground a la NXT.
This is coming from the woman who by all accounts, along with Roman Reigns, is the face of the franchise that is WWE. The same woman who main evented WrestleMania and won in that same main event. Lynch's idea is to remove the thoughts of "women's segment" or "women's match" from people's minds and just make it segments and matches. No one should view something as something else. And what is even more interesting about all of this is that she says this about her own company, yet there is somewhere in that same company where they understand that idea and are making their "women's division" THE division. That place is NXT. The women in that division are being booked to be more than that. They are not just seen as incredible pro wrestlers, but superstars. Now time to explain what I mean.
Serena Williams Has Never Been "Women's Champion" She Is Just A Champion
Credit: CNN
More Than A Division
Photo: WWE
The current NXT Women's Division is the best-booked women's division in history. That may be seen as an insane thought to come out with, but there is plenty behind it to confirm why it is more fact than fiction. What makes it possible is the competitors they have and the amount they contain on this one roster. It is pure talent, with the only "weak" spots not firmly being on television yet. But that's the thing. No one is weak on this roster. NXT, even if they are on television, technically is where they still learn. More so the Performance Center, but you get the point. If the talent wasn't there like years past, it wouldn't be the true major force of the "Wednesday Night Wars."
The Professional Wrestlers Who Stack This Division
You must begin with the champ. While the talent has been there, it didn't feel like the division hit it's stride until "The Nightmare" arrived. It became a different feel almost immediately as she brought a serious threat to Shayna Baszler, who had dominated the division for essentially two years at that point. But having the force that is Rhea Ripley become the face of that new look, serious division was just the start. From the moment she showed up, you know she was a star from the reaction itself. That was before NXT even got to the USA Network. But again, it was the start. It began to feel like everyone was either getting healthy who had missed time (Tegan Nox, Dakota Kai), found their true footing (Io Shirai), or was simply included in this vision (NXT UK).
And all these pieces are great, but the new NXT Champion was the one to lead this division to new heights. Her rivalry with Baszler saw the first-ever women's WarGames go down as Ripley defied the odds alongside Candice LeRae and solidifying herself as a superstar in the process. Then, on the final NXT of the year, she supplanted herself at the top of this new division that was the complete focus on NXT TV weekly. She pinned the dominant champion in Baszler to become the NXT Champion and so the future and present was set.
This GIF says it all @RheaRipley_WWE pic.twitter.com/JnjrpY8wmF
— 𝔹𝕒𝕥𝕤𝕟𝕚𝕔𝕜𝟟𝟝 (@Batsnick75) August 30, 2019
Shayna Baszler
Without the former champion, none of this may have been possible. While yes, NXT had talent when she first became champion, it was not even close to what they have now. What Baszler managed to do was establish a dominance that was only matched by Asuka before her. And her continuous wins over some of the talent that make up this incredible division now were seen at the time to be detrimental. But in hindsight, it was exactly what needed to happen. Everyone was finding who they were still and having the bully at the top made instant favorites in so many. Not having Baszler could have hurt any chance of this division becoming the class that it sits at now.
Io Shirai
Photo: Stardom
Since the moment she became "The Joshi Judas", everything has changed. The Io Shirai that we had before that was great, but this dark turn she went down solidified perfection for her. Her reckless, yet precise style and attitude stood as the perfect addition to what Triple H and company were trying to create in this division. If there was a complaint to have with the booking of this division, the only person who may have a case is that of Shirai. Becoming an NXT Champion is something that seems all but certain. If we are being honest, however, she should already be there. No NXT fan wants to lose the "Genius of the Sky", but if rumors are to be believed, her days may be numbered. Hopefully, things do change and one of the worlds best remains in NXT and captures the gold.
Queen of the Sky
Io Shirai @shirai_io #Saturdaynightlive
Super Saturday Moonsault pic.twitter.com/TNkYyWDimh
— 紫雷イオ😈 Fanpage #NXTWOMENSCHAMPION (@QueenIoShirai) February 2, 2020
Bianca Belair
Future champion? Yes. Future WrestleMania main event? Quite possibly. When it comes to potential for the superstars that make up this division, Bianca Belair sits at the tippy top of the food chain. Somehow she was kind of forgotten before USA Network welcomed NXT to their channel and she has risen to fame all over again. No one has to be told what the future holds for Belair. We know it will be lots of gold. She is set to face Rhea Ripley at NXT TakeOver: Portland for the NXT Championship. That's impressive. But what is even more impressive is what she did from number two in the Royal Rumble this year. She was the "iron-woman" for this one and set the record for eliminations with eight. It's unfair how much potential she has, but that isn't her problem.
Straight Facts🚫🧢 pic.twitter.com/SZTIRbDpo4
— Bianca Belair (@BiancaBelairWWE) January 10, 2020
Candice LeRae
It's impossible to not love Candice LeRae. And for good reason, as she has quietly set herself as the veteran of NXT. That role is perfect for someone like LeRae, who has most recently planted herself inside of the Nox-Kai feud. For comparison, she feels like she is the Samoa Joe of this division. What I mean is, he came in as a veteran who was never supposed to go somewhere and filled the gaps wherever was needed. So well that he did go somewhere, the main roster. LeRae can be that. She has odds to overcome but something says she has no problem doing so. A title run will come to her someday, it is only right for someone at the caliber and respect level of LeRae.
.@CandiceLeRae just helped @JohnnyGargano set up the Gargano Escape #NXTCleveland pic.twitter.com/1Rk8IdadlX
— Ben Axelrod (@BenAxelrod) March 3, 2019
Mia Yim
"The HBIC" has contended for titles, put up good fights, and earned respect every time she enters the ring. Mia Yim is one of the best stories in wrestling and she wears that on her sleeve. There is something to say about that "underdog" mentality. Yim being this far down the list is no reason other than how stacked this division currently is. She has become more than respectable inside the ring, thriving in matches that get extra physical. There is a reason she is here. After being a two-time Mae Young Classic competitor, the fans wanted to see more. Since then, she has carved out this role right in the middle of things.
…one more gif of that match that I have in the Mia Yim archives. pic.twitter.com/cQRE7mSqA6
— CHANNEL 88 (@hellmatic85) September 26, 2019
Tegan Nox
Journalism brings an unquestioned unwritten rule of being an unbiased reporter. But this is professional wrestling and everyone has favorites. Tegan Nox is one of those favorites. The Welsh superstar has been mega since coming into the WWE via Mae Young Classic. Injuries are the only reason she gets to bud as a star now. But no fear, "The Girl with the Shiniest Wizard" is doing everything in her power to show the world she is worthy of that spot and her current rivalry with her former best friend, Dakota Kai, will help get her there. Everything about Nox is loveable, from her "geek out" for being in the Royal Rumble and getting crushed by Beth Phoenix to her overall grit to get back up after all the injuries. She became an instant main eventer when she came back, a championship is next.
Why Nixon Newell is one of my favorite WCPW wrestlers, in one GIF: pic.twitter.com/4sqlvWx7t4
— Derryck/RS (@16N1K4) November 27, 2016
Dakota Kai
With Nox comes Dakota Kai. Kai was originally the "sweetheart" of the NXT women's division before turning a page and becoming the complete opposite. She decimated her friend's knee during the WarGames match and turned to a dark, edgier version of herself that was not imaginable this time last year. Everything that Kai stood for was an underdog mentality that fans could get behind. But now, she has become the enemy of her one time best friend. The ability of Dakota Kai is something no one overlooks, but the devious methods she currently has in her new style sets up her for success. If she can beat Nox at TakeOver, Ripley or Belair may be expecting a determined opponent soon enough.
. @DakotaKai_WWE
(Also at the end of the gif peep referee @AWhittakerNGOK) @mcitywrestling | #MCWEncore
🎥: https://t.co/TkEaNsp72E pic.twitter.com/sDsA7G21Rq
— Women's Wrestling GIFs (@WomensWresGIFs) June 7, 2019
The newest addition to the main scene of the NXT Women's Division is the former NXT UK Champion, Toni Storm. For a long time, people have been waiting for Storm to make the jump over full time and become another key cog in the machine that is this stacked division. Storm got herself a championship opportunity already, but what is good is that even after the loss, she attempted to show she was here to stay. Her time inside of NXT is small, but what is not is the potential she has. The future is bright.
Better Toni Storm clip than the last gif#WorldsCollide pic.twitter.com/CzKF28rIaS
— The GIF Guy (@IHaveFourBalls) January 26, 2020
Attitude Era Like Feel In Terms Of Main Event Scene
You can feel the anger inside of you when you see the "Attitude Era". But what made that era so incredible is the amount of main event talent they contained. The Rock, Stone Cold, Mankind, Undertaker, Kane, Triple H. There is a reason that the WWE Championship changed hands at a rate that no one had ever seen before and you do not really see now. To a different extent, this is the talent the NXT women's division of today contains. Name after name after name that can hold the championship at any time if given the chance. Gone are the days of Asuka or Shayna Baszler, in the sense of year-long title reigns. It simply does not fit this division that is packed with talent, and the title will be changing hands more than ever before.
So in the sense of if having an "Attitude Era" feel, it is in the sense of talent that can't be denied in the main scene.
Upcoming Talent
The ever-changing world of NXT gives hope if anyone is to ever move to Raw or SmackDown, as they remain infiltrated with talent that have no taken on a full role yet. To start off, Mercedes Martinez is seen by many as one of the best in-ring talents of all-time. She is going to have a full role soon enough, and when she does she is sure to catapult into the main scene. Shotzi Blackheart has found a role recently, gaining some wins and even eliminated Shayna Baszler from the battle royal a few weeks ago. There are also rumors of 2019 weekly pro wrestling magazine Joshi of the year Sareee joining NXT soon to add to the plethora of in-ring talent. Other names to look out for in the next few months are Santana Garrett, Chelsea Green, Deonna Purrazzo, Taynara, and Kayden Carter. Considering all the names that are under this, it only confirms more how perfectly booked this division is right now.
Shotzi Blackheart just came out in a goddamn tank #WWENXT pic.twitter.com/OTEKXkwhyj
— Goreville Shriek (@amcnal) January 30, 2020
More Than "Just" The Title
If you need proof as to why this division is the best-booked women's division ever, it's because of their ability to craft feuds that don't involve the title. Looking at the current Tegan Nox-Dakota Kai feud is something that only forwards that thought process. Going back to Toronto in 2019, Io Shirai and Candice LeRae wowed the world with their incredible match that was up there for the NXT match of the year. Nox and Kai in a Street Fight is only the next step in showing that this division can dominate the current NXT and be what makes it so special in 2020. This is something that both Raw and SmackDown has not managed to nail down for years, even with the "Women's Revolution" being so important.
They added Women's Tag Team Championships and could not even figure out how to do it with those. But what NXT does is master the idea that all of their women's talent matters. The same level even. Something that hasn't been seen since the heyday of the TNA Knockout's Division a decade ago. But this is even better. Better in the sense that everyone is a contender. Everyone is going to leave the mark and make each other better. All of their talent is premier talent. The powers that be in NXT notice that, which is why they are becoming the main force of the black and yellow brand once again.
Comparisons can happen all they want, but what everyone has to agree on is that there is something special happening in NXT right now. That something special that doesn't always happen in pro wrestling, but when it does you can feel it. This is that feeling and we have to appreciate every moment. Wrestling fans have a tough time enjoying, but hey, this is that chance. Every button being pressed is the right one. The NXT women's division. The best-booked women's division. As superstars are being made week in and week out.
Stay tuned to the Last Word on Pro Wrestling for more on this and other stories from around the world of wrestling, as they develop. You can always count on LWOPW to be on top of the major news in the wrestling world, as well as to provide you with analysis, previews, videos, interviews, and editorials on the wrestling world.
Posted in Featured, WWE NXT, WWE UniverseTagged Becky Lynch, NXT, Rhea Ripley, Shayna Baszler, Tegan Nox
Three Matches Announced For Jalex Takes Back The Power
Preview: GCW in Japan – Ready to Die (2/4/20)


text:
from base64 import b64decode, b64encode
import json
from os.path import dirname, join, exists
import unittest
from urlparse import urlparse, parse_qs

from onelogin.saml2.auth import OneLogin_Saml2_Auth
from onelogin.saml2.constants import OneLogin_Saml2_Constants
from onelogin.saml2.settings import OneLogin_Saml2_Settings
from onelogin.saml2.utils import OneLogin_Saml2_Utils
from onelogin.saml2.logout_request import OneLogin_Saml2_Logout_Request

class OneLogin_Saml2_Auth_Test(unittest.TestCase):
    data_path = join(dirname(__file__), '..', '..', '..', 'data')

    def loadSettingsJSON(self):
        filename = join(dirname(__file__), '..', '..', '..', 'settings', 'settings1.json')
        if exists(filename):
            stream = open(filename, 'r')
            settings = json.load(stream)
            stream.close()
            return settings
        else:
            raise Exception('Settings json file does not exist')

    def file_contents(self, filename):
        f = open(filename, 'r')
        content = f.read()
        f.close()
        return content

    def get_request(self):
        return {
            'http_host': 'example.com',
            'script_name': '/index.html',
            'get_data': {}
        }

    def testGetSettings(self):
        """
        Tests the get_settings method of the OneLogin_Saml2_Auth class
        Build a OneLogin_Saml2_Settings object with a setting array
        and compare the value returned from the method of the
        auth object
        """
        settings_info = self.loadSettingsJSON()
        settings = OneLogin_Saml2_Settings(settings_info)
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)

        auth_settings = auth.get_settings()
        self.assertEqual(settings.get_sp_data(), auth_settings.get_sp_data())

    def testGetSSOurl(self):
        """
        Tests the get_sso_url method of the OneLogin_Saml2_Auth class
        """
        settings_info = self.loadSettingsJSON()
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)

        sso_url = settings_info['idp']['singleSignOnService']['url']
        self.assertEqual(auth.get_sso_url(), sso_url)

    def testGetSLOurl(self):
        """
        Tests the get_slo_url method of the OneLogin_Saml2_Auth class
        """
        settings_info = self.loadSettingsJSON()
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)

        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertEqual(auth.get_slo_url(), slo_url)

    def testGetSessionIndex(self):
        """
        Tests the get_session_index method of the OneLogin_Saml2_Auth class
        """
        settings_info = self.loadSettingsJSON()
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        self.assertIsNone(auth.get_session_index())

        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'responses', 'valid_response.xml.base64'))
        del request_data['get_data']
        request_data['post_data'] = {
            'SAMLResponse': message
        }
        auth2 = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())
        self.assertIsNone(auth2.get_session_index())

        auth2.process_response()
        self.assertEqual('_6273d77b8cde0c333ec79d22a9fa0003b9fe2d75cb', auth2.get_session_index())

    def testGetLastErrorReason(self):
        """
        Tests the get_last_error_reason method of the OneLogin_Saml2_Auth class
        Case Invalid Response
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'responses', 'response1.xml.base64'))
        del request_data['get_data']
        request_data['post_data'] = {
            'SAMLResponse': message
        }
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())
        auth.process_response()

        self.assertEqual(auth.get_last_error_reason(), 'Signature validation failed. SAML Response rejected')

    def testProcessNoResponse(self):
        """
        Tests the process_response method of the OneLogin_Saml2_Auth class
        Case No Response, An exception is throw
        """
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=self.loadSettingsJSON())

        try:
            auth.process_response()
            self.assertFalse(True)
        except Exception as e:
            self.assertIn('SAML Response not found', e.message)

        self.assertEqual(auth.get_errors(), ['invalid_binding'])

    def testProcessResponseInvalid(self):
        """
        Tests the process_response method of the OneLogin_Saml2_Auth class
        Case Invalid Response, After processing the response the user
        is not authenticated, attributes are notreturned, no nameID and
        the error array is not empty, contains 'invalid_response
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'responses', 'response1.xml.base64'))
        del request_data['get_data']
        request_data['post_data'] = {
            'SAMLResponse': message
        }
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())
        auth.process_response()

        self.assertFalse(auth.is_authenticated())
        self.assertEqual(len(auth.get_attributes()), 0)
        self.assertEqual(auth.get_nameid(), None)
        self.assertEqual(auth.get_attribute('uid'), None)
        self.assertEqual(auth.get_errors(), ['invalid_response'])

    def testProcessResponseInvalidRequestId(self):
        """
        Tests the process_response method of the OneLogin_Saml2_Auth class
        Case Invalid Response, Invalid requestID
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'responses', 'unsigned_response.xml.base64'))
        plain_message = b64decode(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/acs.php', current_url)
        del request_data['get_data']
        request_data['post_data'] = {
            'SAMLResponse': b64encode(plain_message)
        }
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())
        request_id = 'invalid'
        auth.process_response(request_id)
        self.assertEqual('No Signature found. SAML Response rejected', auth.get_last_error_reason())

        auth.set_strict(True)
        auth.process_response(request_id)
        self.assertEqual(auth.get_errors(), ['invalid_response'])
        self.assertEqual('The InResponseTo of the Response: _57bcbf70-7b1f-012e-c821-782bcb13bb38, does not match the ID of the AuthNRequest sent by the SP: invalid', auth.get_last_error_reason())

        valid_request_id = '_57bcbf70-7b1f-012e-c821-782bcb13bb38'
        auth.process_response(valid_request_id)
        self.assertEqual('No Signature found. SAML Response rejected', auth.get_last_error_reason())

    def testProcessResponseValid(self):
        """
        Tests the process_response method of the OneLogin_Saml2_Auth class
        Case Valid Response, After processing the response the user
        is authenticated, attributes are returned, also has a nameID and
        the error array is empty
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'responses', 'valid_response.xml.base64'))
        del request_data['get_data']
        request_data['post_data'] = {
            'SAMLResponse': message
        }
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())

        auth.process_response()
        self.assertTrue(auth.is_authenticated())
        self.assertEqual(len(auth.get_errors()), 0)
        self.assertEqual('492882615acf31c8096b627245d76ae53036c090', auth.get_nameid())
        attributes = auth.get_attributes()
        self.assertNotEqual(len(attributes), 0)
        self.assertEqual(auth.get_attribute('mail'), attributes['mail'])
        session_index = auth.get_session_index()
        self.assertEqual('_6273d77b8cde0c333ec79d22a9fa0003b9fe2d75cb', session_index)

    def testRedirectTo(self):
        """
        Tests the redirect_to method of the OneLogin_Saml2_Auth class
        (phpunit raises an exception when a redirect is executed, the
        exception is catched and we check that the targetURL is correct)
        Case redirect without url parameter
        """
        request_data = self.get_request()
        relay_state = 'http://sp.example.com'
        request_data['get_data']['RelayState'] = relay_state
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())
        target_url = auth.redirect_to()
        self.assertEqual(target_url, relay_state)

    def testRedirectTowithUrl(self):
        """
        Tests the redirect_to method of the OneLogin_Saml2_Auth class
        (phpunit raises an exception when a redirect is executed, the
        exception is catched and we check that the targetURL is correct)
        Case redirect with url parameter
        """
        request_data = self.get_request()
        relay_state = 'http://sp.example.com'
        url_2 = 'http://sp2.example.com'
        request_data['get_data']['RelayState'] = relay_state
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())
        target_url = auth.redirect_to(url_2)
        self.assertEqual(target_url, url_2)

    def testProcessNoSLO(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case No Message, An exception is throw
        """
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=self.loadSettingsJSON())
        try:
            auth.process_slo(True)
        except Exception as e:
            self.assertIn('SAML LogoutRequest/LogoutResponse not found', e.message)
        self.assertEqual(auth.get_errors(), ['invalid_binding'])

    def testProcessSLOResponseInvalid(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Invalid Logout Response
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_responses', 'logout_response_deflated.xml.base64'))
        request_data['get_data']['SAMLResponse'] = message
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())

        auth.process_slo(True)
        self.assertEqual(len(auth.get_errors()), 0)

        auth.set_strict(True)
        auth.process_slo(True)
        # The Destination fails
        self.assertEqual(auth.get_errors(), ['invalid_logout_response'])

        auth.set_strict(False)
        auth.process_slo(True)
        self.assertEqual(len(auth.get_errors()), 0)

    def testProcessSLOResponseNoSucess(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Logout Response not sucess
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_responses', 'invalids', 'status_code_responder.xml.base64'))
        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLResponse'] = message
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())

        auth.set_strict(True)
        auth.process_slo(True)
        self.assertEqual(auth.get_errors(), ['logout_not_success'])

    def testProcessSLOResponseRequestId(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Logout Response with valid and invalid Request ID
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_responses', 'logout_response_deflated.xml.base64'))
        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLResponse'] = message
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())

        request_id = 'wrongID'
        auth.set_strict(True)
        auth.process_slo(True, request_id)
        self.assertEqual(auth.get_errors(), ['invalid_logout_response'])

        request_id = 'ONELOGIN_21584ccdfaca36a145ae990442dcd96bfe60151e'
        auth.process_slo(True, request_id)
        self.assertEqual(len(auth.get_errors()), 0)

    def testProcessSLOResponseValid(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Valid Logout Response
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_responses', 'logout_response_deflated.xml.base64'))
        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLResponse'] = message
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())

        # FIXME
        # if (!isset($_SESSION)) {
        #     $_SESSION = array();
        # }
        # $_SESSION['samltest'] = true;

        auth.set_strict(True)
        auth.process_slo(True)
        self.assertEqual(len(auth.get_errors()), 0)

        # FIXME
        # // Session keep alive
        # $this->assertTrue(isset($_SESSION['samltest']));
        # $this->assertTrue($_SESSION['samltest']);

    def testProcessSLOResponseValidDeletingSession(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Valid Logout Response, validating deleting the local session
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_responses', 'logout_response_deflated.xml.base64'))

        # FIXME
        # if (!isset($_SESSION)) {
        #     $_SESSION = array();
        # }
        # $_SESSION['samltest'] = true;

        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLResponse'] = message
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())

        auth.set_strict(True)
        auth.process_slo(False)

        self.assertEqual(len(auth.get_errors()), 0)

        # FIXME
        # $this->assertFalse(isset($_SESSION['samltest']));

    def testProcessSLORequestInvalidValid(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Invalid Logout Request
        """
        settings_info = self.loadSettingsJSON()
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_requests', 'logout_request_deflated.xml.base64'))
        request_data['get_data']['SAMLRequest'] = message
        auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info)
        target_url = auth.process_slo(True)
        parsed_query = parse_qs(urlparse(target_url)[4])
        self.assertEqual(len(auth.get_errors()), 0)
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLResponse', parsed_query)
        # self.assertNotIn('RelayState', parsed_query)

        auth.set_strict(True)
        auth.process_slo(True)
        # Fail due destination missmatch
        self.assertEqual(auth.get_errors(), ['invalid_logout_request'])

        auth.set_strict(False)
        target_url_2 = auth.process_slo(True)
        parsed_query_2 = parse_qs(urlparse(target_url_2)[4])
        self.assertEqual(len(auth.get_errors()), 0)
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url_2)
        self.assertIn('SAMLResponse', parsed_query_2)
        # self.assertNotIn('RelayState', parsed_query_2)

    def testProcessSLORequestNotOnOrAfterFailed(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Logout Request NotOnOrAfter failed
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_requests', 'invalids', 'not_after_failed.xml.base64'))
        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLRequest'] = message
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())

        auth.set_strict(True)
        auth.process_slo(True)
        self.assertEqual(auth.get_errors(), ['invalid_logout_request'])

    def testProcessSLORequestDeletingSession(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Valid Logout Request, validating that the local session is deleted,
        a LogoutResponse is created and a redirection executed
        """
        settings_info = self.loadSettingsJSON()
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_requests', 'logout_request_deflated.xml.base64'))
        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLRequest'] = message
        # FIXME
        # if (!isset($_SESSION)) {
        #     $_SESSION = array();
        # }
        # $_SESSION['samltest'] = true;
        auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info)

        auth.set_strict(True)
        target_url = auth.process_slo(True)
        parsed_query = parse_qs(urlparse(target_url)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLResponse', parsed_query)
        # self.assertNotIn('RelayState', parsed_query)

        # FIXME // Session is not alive
        # $this->assertFalse(isset($_SESSION['samltest']));

        # $_SESSION['samltest'] = true;

        auth.set_strict(True)
        target_url_2 = auth.process_slo(True)
        target_url_2 = auth.process_slo(True)
        parsed_query_2 = parse_qs(urlparse(target_url_2)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url_2)
        self.assertIn('SAMLResponse', parsed_query_2)
        # self.assertNotIn('RelayState', parsed_query_2)

        # FIXME // Session is alive
        # $this->assertTrue(isset($_SESSION['samltest']));
        # $this->assertTrue($_SESSION['samltest']);

    def testProcessSLORequestRelayState(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Valid Logout Request, validating the relayState,
        a LogoutResponse is created and a redirection executed
        """
        settings_info = self.loadSettingsJSON()
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_requests', 'logout_request_deflated.xml.base64'))
        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLRequest'] = message
        request_data['get_data']['RelayState'] = 'http://relaystate.com'
        auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info)

        auth.set_strict(True)
        target_url = auth.process_slo(False)
        parsed_query = parse_qs(urlparse(target_url)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLResponse', parsed_query)
        self.assertIn('RelayState', parsed_query)
        self.assertIn('http://relaystate.com', parsed_query['RelayState'])

    def testProcessSLORequestSignedResponse(self):
        """
        Tests the process_slo method of the OneLogin_Saml2_Auth class
        Case Valid Logout Request, validating the relayState,
        a signed LogoutResponse is created and a redirection executed
        """
        settings_info = self.loadSettingsJSON()
        settings_info['security']['logoutResponseSigned'] = True
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'logout_requests', 'logout_request_deflated.xml.base64'))
        # In order to avoid the destination problem
        plain_message = OneLogin_Saml2_Utils.decode_base64_and_inflate(message)
        current_url = OneLogin_Saml2_Utils.get_self_url_no_query(request_data)
        plain_message = plain_message.replace('http://stuff.com/endpoints/endpoints/sls.php', current_url)
        message = OneLogin_Saml2_Utils.deflate_and_base64_encode(plain_message)
        request_data['get_data']['SAMLRequest'] = message
        request_data['get_data']['RelayState'] = 'http://relaystate.com'
        auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info)

        auth.set_strict(True)
        target_url = auth.process_slo(False)
        parsed_query = parse_qs(urlparse(target_url)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLResponse', parsed_query)
        self.assertIn('RelayState', parsed_query)
        self.assertIn('SigAlg', parsed_query)
        self.assertIn('Signature', parsed_query)
        self.assertIn('http://relaystate.com', parsed_query['RelayState'])
        self.assertIn(OneLogin_Saml2_Constants.RSA_SHA1, parsed_query['SigAlg'])

    def testLogin(self):
        """
        Tests the login method of the OneLogin_Saml2_Auth class
        Case Login with no parameters. An AuthnRequest is built an redirect executed
        """
        settings_info = self.loadSettingsJSON()
        request_data = self.get_request()
        auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info)

        target_url = auth.login()
        parsed_query = parse_qs(urlparse(target_url)[4])
        sso_url = settings_info['idp']['singleSignOnService']['url']
        self.assertIn(sso_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        self.assertIn('RelayState', parsed_query)
        hostname = OneLogin_Saml2_Utils.get_self_host(request_data)
        self.assertIn(u'http://%s/index.html' % hostname, parsed_query['RelayState'])

    def testLoginWithRelayState(self):
        """
        Tests the login method of the OneLogin_Saml2_Auth class
        Case Login with relayState. An AuthnRequest is built with a the
        RelayState in the assertion is built and redirect executed
        """
        settings_info = self.loadSettingsJSON()
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        relay_state = 'http://sp.example.com'

        target_url = auth.login(relay_state)
        parsed_query = parse_qs(urlparse(target_url)[4])
        sso_url = settings_info['idp']['singleSignOnService']['url']
        self.assertIn(sso_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        self.assertIn('RelayState', parsed_query)
        self.assertIn(relay_state, parsed_query['RelayState'])

    def testLoginSigned(self):
        """
        Tests the login method of the OneLogin_Saml2_Auth class
        Case Login signed. An AuthnRequest signed is built an redirect executed
        """
        settings_info = self.loadSettingsJSON()
        settings_info['security']['authnRequestsSigned'] = True
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        return_to = u'http://example.com/returnto'

        target_url = auth.login(return_to)
        parsed_query = parse_qs(urlparse(target_url)[4])
        sso_url = settings_info['idp']['singleSignOnService']['url']
        self.assertIn(sso_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        self.assertIn('RelayState', parsed_query)
        self.assertIn('SigAlg', parsed_query)
        self.assertIn('Signature', parsed_query)
        self.assertIn(return_to, parsed_query['RelayState'])
        self.assertIn(OneLogin_Saml2_Constants.RSA_SHA1, parsed_query['SigAlg'])

    def testLoginForceAuthN(self):
        """
        Tests the login method of the OneLogin_Saml2_Auth class
        Case Logout with no parameters. A AuthN Request is built with ForceAuthn and redirect executed
        """
        settings_info = self.loadSettingsJSON()
        return_to = u'http://example.com/returnto'
        sso_url = settings_info['idp']['singleSignOnService']['url']

        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        target_url = auth.login(return_to)
        parsed_query = parse_qs(urlparse(target_url)[4])
        sso_url = settings_info['idp']['singleSignOnService']['url']
        self.assertIn(sso_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        request = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query['SAMLRequest'][0])
        self.assertNotIn('ForceAuthn="true"', request)

        auth_2 = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        target_url_2 = auth_2.login(return_to, False, False)
        parsed_query_2 = parse_qs(urlparse(target_url_2)[4])
        self.assertIn(sso_url, target_url_2)
        self.assertIn('SAMLRequest', parsed_query_2)
        request_2 = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query_2['SAMLRequest'][0])
        self.assertNotIn('ForceAuthn="true"', request_2)

        auth_3 = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        target_url_3 = auth_3.login(return_to, True, False)
        parsed_query_3 = parse_qs(urlparse(target_url_3)[4])
        self.assertIn(sso_url, target_url_3)
        self.assertIn('SAMLRequest', parsed_query_3)
        request_3 = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query_3['SAMLRequest'][0])
        self.assertIn('ForceAuthn="true"', request_3)

    def testLoginIsPassive(self):
        """
        Tests the login method of the OneLogin_Saml2_Auth class
        Case Logout with no parameters. A AuthN Request is built with IsPassive and redirect executed
        """
        settings_info = self.loadSettingsJSON()
        return_to = u'http://example.com/returnto'
        sso_url = settings_info['idp']['singleSignOnService']['url']

        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        target_url = auth.login(return_to)
        parsed_query = parse_qs(urlparse(target_url)[4])
        sso_url = settings_info['idp']['singleSignOnService']['url']
        self.assertIn(sso_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        request = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query['SAMLRequest'][0])
        self.assertNotIn('IsPassive="true"', request)

        auth_2 = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        target_url_2 = auth_2.login(return_to, False, False)
        parsed_query_2 = parse_qs(urlparse(target_url_2)[4])
        self.assertIn(sso_url, target_url_2)
        self.assertIn('SAMLRequest', parsed_query_2)
        request_2 = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query_2['SAMLRequest'][0])
        self.assertNotIn('IsPassive="true"', request_2)

        auth_3 = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        target_url_3 = auth_3.login(return_to, False, True)
        parsed_query_3 = parse_qs(urlparse(target_url_3)[4])
        self.assertIn(sso_url, target_url_3)
        self.assertIn('SAMLRequest', parsed_query_3)
        request_3 = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query_3['SAMLRequest'][0])
        self.assertIn('IsPassive="true"', request_3)

    def testLogout(self):
        """
        Tests the logout method of the OneLogin_Saml2_Auth class
        Case Logout with no parameters. A logout Request is built and redirect
        executed
        """
        settings_info = self.loadSettingsJSON()
        request_data = self.get_request()
        auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info)

        target_url = auth.logout()
        parsed_query = parse_qs(urlparse(target_url)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        self.assertIn('RelayState', parsed_query)
        hostname = OneLogin_Saml2_Utils.get_self_host(request_data)
        self.assertIn(u'http://%s/index.html' % hostname, parsed_query['RelayState'])

    def testLogoutWithRelayState(self):
        """
        Tests the logout method of the OneLogin_Saml2_Auth class
        Case Logout with relayState. A logout Request with a the RelayState in
        the assertion is built and redirect executed
        """
        settings_info = self.loadSettingsJSON()
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        relay_state = 'http://sp.example.com'

        target_url = auth.logout(relay_state)
        parsed_query = parse_qs(urlparse(target_url)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        self.assertIn('RelayState', parsed_query)
        self.assertIn(relay_state, parsed_query['RelayState'])

    def testLogoutSigned(self):
        """
        Tests the logout method of the OneLogin_Saml2_Auth class
        Case Logout signed. A logout Request signed in
        the assertion is built and redirect executed
        """
        settings_info = self.loadSettingsJSON()
        settings_info['security']['logoutRequestSigned'] = True
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)
        return_to = u'http://example.com/returnto'

        target_url = auth.logout(return_to)
        parsed_query = parse_qs(urlparse(target_url)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)
        self.assertIn('RelayState', parsed_query)
        self.assertIn('SigAlg', parsed_query)
        self.assertIn('Signature', parsed_query)
        self.assertIn(return_to, parsed_query['RelayState'])
        self.assertIn(OneLogin_Saml2_Constants.RSA_SHA1, parsed_query['SigAlg'])

    def testLogoutNoSLO(self):
        """
        Tests the logout method of the OneLogin_Saml2_Auth class
        Case IdP no SLO endpoint.
        """
        settings_info = self.loadSettingsJSON()
        del settings_info['idp']['singleLogoutService']
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)

        try:
            # The Header of the redirect produces an Exception
            auth.logout('http://example.com/returnto')
            self.assertFalse(True)
        except Exception as e:
            self.assertIn('The IdP does not support Single Log Out', e.message)

    def testLogoutNameIDandSessionIndex(self):
        """
        Tests the logout method of the OneLogin_Saml2_Auth class
        Case nameID and sessionIndex as parameters.
        """
        settings_info = self.loadSettingsJSON()
        request_data = self.get_request()
        auth = OneLogin_Saml2_Auth(request_data, old_settings=settings_info)

        name_id = 'name_id_example'
        session_index = 'session_index_example'
        target_url = auth.logout(name_id=name_id, session_index=session_index)
        parsed_query = parse_qs(urlparse(target_url)[4])
        slo_url = settings_info['idp']['singleLogoutService']['url']
        self.assertIn(slo_url, target_url)
        self.assertIn('SAMLRequest', parsed_query)

        logout_request = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query['SAMLRequest'][0])
        name_id_from_request = OneLogin_Saml2_Logout_Request.get_nameid(logout_request)
        sessions_index_in_request = OneLogin_Saml2_Logout_Request.get_session_indexes(logout_request)
        self.assertIn(session_index, sessions_index_in_request)
        self.assertEqual(name_id, name_id_from_request)

    def testLogoutNameID(self):
        """
        Tests the logout method of the OneLogin_Saml2_Auth class
        Case nameID loaded after process SAML Response
        """
        request_data = self.get_request()
        message = self.file_contents(join(self.data_path, 'responses', 'valid_response.xml.base64'))
        del request_data['get_data']
        request_data['post_data'] = {
            'SAMLResponse': message
        }
        auth = OneLogin_Saml2_Auth(request_data, old_settings=self.loadSettingsJSON())
        auth.process_response()

        name_id_from_response = auth.get_nameid()

        target_url = auth.logout()
        parsed_query = parse_qs(urlparse(target_url)[4])
        self.assertIn('SAMLRequest', parsed_query)
        logout_request = OneLogin_Saml2_Utils.decode_base64_and_inflate(parsed_query['SAMLRequest'][0])

        name_id_from_request = OneLogin_Saml2_Logout_Request.get_nameid(logout_request)
        self.assertEqual(name_id_from_response, name_id_from_request)

    def testSetStrict(self):
        """
        Tests the set_strict method of the OneLogin_Saml2_Auth
        """
        settings_info = self.loadSettingsJSON()
        settings_info['strict'] = False
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings_info)

        settings = auth.get_settings()
        self.assertFalse(settings.is_strict())

        auth.set_strict(True)
        settings = auth.get_settings()
        self.assertTrue(settings.is_strict())

        auth.set_strict(False)
        settings = auth.get_settings()
        self.assertFalse(settings.is_strict())

        try:
            auth.set_strict('42')
            self.assertFalse(True)
        except Exception as e:
            self.assertTrue(isinstance(e, AssertionError))

    def testBuildRequestSignature(self):
        """
        Tests the build_request_signature method of the OneLogin_Saml2_Auth
        """
        settings = self.loadSettingsJSON()
        message = self.file_contents(join(self.data_path, 'logout_requests', 'logout_request_deflated.xml.base64'))
        relay_state = 'http://relaystate.com'
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings)

        signature = auth.build_request_signature(message, relay_state)
        valid_signature = 'E17GU1STzanOXxBTKjweB1DovP8aMJdj5BEy0fnGoEslKdP6hpPc3enjT/bu7I8D8QzLoir8SxZVWdUDXgIxJIEgfK5snr+jJwfc5U2HujsOa/Xb3c4swoyPcyQhcxLRDhDjPq5cQxJfYoPeElvCuI6HAD1mtdd5PS/xDvbIxuw='
        self.assertEqual(signature, valid_signature)

        settings['sp']['privatekey'] = ''
        settings['custom_base_path'] = u'invalid/path/'
        auth2 = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings)
        try:
            auth2.build_request_signature(message, relay_state)
        except Exception as e:
            self.assertIn("Trying to sign the SAMLRequest but can't load the SP private key", e.message)

    def testBuildResponseSignature(self):
        """
        Tests the build_response_signature method of the OneLogin_Saml2_Auth
        """
        settings = self.loadSettingsJSON()
        message = self.file_contents(join(self.data_path, 'logout_responses', 'logout_response_deflated.xml.base64'))
        relay_state = 'http://relaystate.com'
        auth = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings)

        signature = auth.build_response_signature(message, relay_state)
        valid_signature = 'IcyWLRX6Dz3wHBfpcUaNLVDMGM3uo6z2Z11Gjq0/APPJaHboKGljffsgMVAGBml497yckq+eYKmmz+jpURV9yTj2sF9qfD6CwX2dEzSzMdRzB40X7pWyHgEJGIhs6BhaOt5oXEk4T+h3AczERqpVYFpL00yo7FNtyQkhZFpHFhM='
        self.assertEqual(signature, valid_signature)

        settings['sp']['privatekey'] = ''
        settings['custom_base_path'] = u'invalid/path/'
        auth2 = OneLogin_Saml2_Auth(self.get_request(), old_settings=settings)
        try:
            auth2.build_response_signature(message, relay_state)
        except Exception as e:
            self.assertIn("Trying to sign the SAMLResponse but can't load the SP private key", e.message)


text:
Tagged: Sunday Times Style
Sunday Times Style hires Williamson as deputy editor
Charlotte Williamson has joined Sunday Times Style as a deputy editor. Before that, Williamson was a features editor, women and home, at TI Media. She was also editor, news review, The Sunday Telegraph, at...


Matt McFarland for CNN Money: Sidewalk Labs, an urban innovation company owned by Google's parent company Alphabet, is teaming with Toronto to begin planning a neighborhood designed as a model for urban life in the 21st century.
Sidewalk Labs will invest $50 million in an initial phase of planning and pilot testing. Alphabet has also pledged to relocate Google's headquarters in Canada to the new neighborhood, called Quayside, which is on the Toronto waterfront. Google has roughly 1,000 employees in Canada.
Sidewalk Labs plans to do everything from reduce pollution, commute times and landfill waste to improve the weather. It envisions reducing the impact of wind, increasing shade on sunny days and blocking rain due to smart building design and tree planting.